Compare commits

...

6 Commits

Author SHA1 Message Date
kim 7f8e541375
Merge c987d50f24 into 45f4afe60e 2024-05-06 13:39:58 +01:00
Vyr Cossont 45f4afe60e
feature: filters v2 server-side warning/hiding (#2793)
* Remove dead code

* Filter statuses when converting to frontend representation

* status.filtered is an array

* Make matching case-insensitive

* Remove TODOs that don't need to be done now

* Add missing filter check for notification

* lint: rename ErrHideStatus

* APIFilterActionToFilterAction not used yet

* swaggerino docseroni

* Address review comments

* Add apimodel.FilterActionNone

---------

Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2024-05-06 12:49:08 +01:00
dependabot[bot] a0d066844f
[chore]: Bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 (#2900) 2024-05-06 11:14:04 +00:00
dependabot[bot] 8237e8d09e
[chore]: Bump codeberg.org/gruf/go-structr from 0.7.0 to 0.8.0 (#2902)
Bumps codeberg.org/gruf/go-structr from 0.7.0 to 0.8.0.

---
updated-dependencies:
- dependency-name: codeberg.org/gruf/go-structr
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 08:51:06 +00:00
dependabot[bot] a5f28fe0c9
[chore]: Bump github.com/gin-contrib/gzip from 1.0.0 to 1.0.1 (#2899)
Bumps [github.com/gin-contrib/gzip](https://github.com/gin-contrib/gzip) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/gin-contrib/gzip/releases)
- [Changelog](https://github.com/gin-contrib/gzip/blob/master/.goreleaser.yaml)
- [Commits](https://github.com/gin-contrib/gzip/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: github.com/gin-contrib/gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 08:50:47 +00:00
dependabot[bot] c98ec6f89d
[chore]: Bump golang.org/x/image from 0.15.0 to 0.16.0 (#2898)
Bumps [golang.org/x/image](https://github.com/golang/image) from 0.15.0 to 0.16.0.
- [Commits](https://github.com/golang/image/compare/v0.15.0...v0.16.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 08:50:03 +00:00
401 changed files with 131528 additions and 52572 deletions

View File

@ -1,5 +1,9 @@
basePath: /
definitions:
FilterAction:
title: FilterAction is the action to apply to statuses matching a filter.
type: string
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
InstanceConfigurationEmojis:
properties:
emoji_size_limit:
@ -1037,6 +1041,60 @@ definitions:
type: string
x-go-name: FilterContext
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
filterKeyword:
properties:
id:
description: The ID of the filter keyword entry in the database.
type: string
x-go-name: ID
keyword:
description: The text to be filtered.
example: fnord
type: string
x-go-name: Keyword
whole_word:
description: Should the filter consider word boundaries?
example: true
type: boolean
x-go-name: WholeWord
title: FilterKeyword represents text to filter within a v2 filter.
type: object
x-go-name: FilterKeyword
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
filterResult:
properties:
filter:
$ref: '#/definitions/filterV2'
keyword_matches:
description: The keywords within the filter that were matched.
items:
type: string
type: array
x-go-name: KeywordMatches
status_matches:
description: The status IDs within the filter that were matched.
items:
type: string
type: array
x-go-name: StatusMatches
title: FilterResult is returned along with a filtered status to explain why it was filtered.
type: object
x-go-name: FilterResult
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
filterStatus:
properties:
id:
description: The ID of the filter status entry in the database.
type: string
x-go-name: ID
phrase:
description: The status ID to be filtered.
type: string
x-go-name: StatusID
title: FilterStatus represents a single status to filter within a v2 filter.
type: object
x-go-name: FilterStatus
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
filterV1:
description: |-
Note that v1 filters are mapped to v2 filters and v2 filter keywords internally.
@ -1086,6 +1144,52 @@ definitions:
type: object
x-go-name: FilterV1
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
filterV2:
description: v2 filters have names and can include multiple phrases and status IDs to filter.
properties:
context:
description: The contexts in which the filter should be applied.
example:
- home
- public
items:
$ref: '#/definitions/filterContext'
minItems: 1
type: array
uniqueItems: true
x-go-name: Context
expires_at:
description: When the filter should no longer be applied. Null if the filter does not expire.
example: "2024-02-01T02:57:49Z"
type: string
x-go-name: ExpiresAt
filter_action:
$ref: '#/definitions/FilterAction'
id:
description: The ID of the filter in the database.
type: string
x-go-name: ID
keywords:
description: The keywords grouped under this filter.
items:
$ref: '#/definitions/filterKeyword'
type: array
x-go-name: Keywords
statuses:
description: The statuses grouped under this filter.
items:
$ref: '#/definitions/filterStatus'
type: array
x-go-name: Statuses
title:
description: The name of the filter.
example: Linux Words
type: string
x-go-name: Title
title: FilterV2 represents a user-defined filter for determining which statuses should not be shown to the user.
type: object
x-go-name: FilterV2
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
headerFilter:
properties:
created_at:
@ -2118,6 +2222,12 @@ definitions:
format: int64
type: integer
x-go-name: FavouritesCount
filtered:
description: A list of filters that matched this status and why they matched, if there are any such filters.
items:
$ref: '#/definitions/filterResult'
type: array
x-go-name: Filtered
id:
description: ID of the status.
example: 01FBVD42CQ3ZEEVMW180SBX03B
@ -2321,6 +2431,12 @@ definitions:
format: int64
type: integer
x-go-name: FavouritesCount
filtered:
description: A list of filters that matched this status and why they matched, if there are any such filters.
items:
$ref: '#/definitions/filterResult'
type: array
x-go-name: Filtered
id:
description: ID of the status.
example: 01FBVD42CQ3ZEEVMW180SBX03B

23
go.mod
View File

@ -22,7 +22,7 @@ require (
codeberg.org/gruf/go-runners v1.6.2
codeberg.org/gruf/go-sched v1.2.3
codeberg.org/gruf/go-store/v2 v2.2.4
codeberg.org/gruf/go-structr v0.7.0
codeberg.org/gruf/go-structr v0.8.0
codeberg.org/superseriousbusiness/exif-terminator v0.7.0
github.com/DmitriyVTitov/size v1.5.0
github.com/KimMachineGun/automemlimit v0.6.0
@ -31,7 +31,7 @@ require (
github.com/coreos/go-oidc/v3 v3.10.0
github.com/disintegration/imaging v1.6.2
github.com/gin-contrib/cors v1.7.1
github.com/gin-contrib/gzip v1.0.0
github.com/gin-contrib/gzip v1.0.1
github.com/gin-contrib/sessions v1.0.0
github.com/gin-gonic/gin v1.9.1
github.com/go-playground/form/v4 v4.2.1
@ -74,10 +74,10 @@ require (
go.opentelemetry.io/otel/trace v1.26.0
go.uber.org/automaxprocs v1.5.3
golang.org/x/crypto v0.22.0
golang.org/x/image v0.15.0
golang.org/x/image v0.16.0
golang.org/x/net v0.24.0
golang.org/x/oauth2 v0.19.0
golang.org/x/text v0.14.0
golang.org/x/oauth2 v0.20.0
golang.org/x/text v0.15.0
gopkg.in/mcuadros/go-syslog.v2 v2.3.0
gopkg.in/yaml.v3 v3.0.1
modernc.org/sqlite v0.0.0-00010101000000-000000000000
@ -96,12 +96,13 @@ require (
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bytedance/sonic v1.11.3 // indirect
github.com/bytedance/sonic v1.11.6 // indirect
github.com/bytedance/sonic/loader v0.1.1 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.1 // indirect
github.com/cilium/ebpf v0.9.1 // indirect
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/containerd/cgroups/v3 v3.0.1 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/cornelk/hashmap v1.0.8 // indirect
@ -135,7 +136,7 @@ require (
github.com/go-openapi/validate v0.24.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.19.0 // indirect
github.com/go-playground/validator/v10 v10.20.0 // indirect
github.com/go-xmlfmt/xmlfmt v0.0.0-20211206191508-7fd73a941850 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/godbus/dbus/v5 v5.0.4 // indirect
@ -177,7 +178,7 @@ require (
github.com/ncruces/julianday v1.0.0 // indirect
github.com/opencontainers/runtime-spec v1.0.2 // indirect
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
github.com/pelletier/go-toml/v2 v2.2.0 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.0 // indirect
@ -220,7 +221,7 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect
google.golang.org/grpc v1.63.2 // indirect
google.golang.org/protobuf v1.33.0 // indirect
google.golang.org/protobuf v1.34.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect

51
go.sum
View File

@ -74,8 +74,8 @@ codeberg.org/gruf/go-sched v1.2.3 h1:H5ViDxxzOBR3uIyGBCf0eH8b1L8wMybOXcdtUUTXZHk
codeberg.org/gruf/go-sched v1.2.3/go.mod h1:vT9uB6KWFIIwnG9vcPY2a0alYNoqdL1mSzRM8I+PK7A=
codeberg.org/gruf/go-store/v2 v2.2.4 h1:8HO1Jh2gg7boQKA3hsDAIXd9zwieu5uXwDXEcTOD9js=
codeberg.org/gruf/go-store/v2 v2.2.4/go.mod h1:zI4VWe5CpXAktYMtaBMrgA5QmO0sQH53LBRvfn1huys=
codeberg.org/gruf/go-structr v0.7.0 h1:gy0/wD7718HwJDoBMeMumk4+7veLrkumgCEOnCyzS8w=
codeberg.org/gruf/go-structr v0.7.0/go.mod h1:K1FXkUyO6N/JKt8aWqyQ8rtW7Z9ZmXKWP8mFAQ2OJjE=
codeberg.org/gruf/go-structr v0.8.0 h1:aZ+ziv2R6zTU16PW7B2d349wY9Du3mObc3hCeUIqtME=
codeberg.org/gruf/go-structr v0.8.0/go.mod h1:K1FXkUyO6N/JKt8aWqyQ8rtW7Z9ZmXKWP8mFAQ2OJjE=
codeberg.org/superseriousbusiness/exif-terminator v0.7.0 h1:Y6VApSXhKqExG0H2hZ2JelRK4xmWdjDQjn13CpEfzko=
codeberg.org/superseriousbusiness/exif-terminator v0.7.0/go.mod h1:gCWKduudUWFzsnixoMzu0FYVdxHWG+AbXnZ50DqxsUE=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
@ -107,28 +107,25 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/buckket/go-blurhash v1.1.0 h1:X5M6r0LIvwdvKiUtiNcRL2YlmOfMzYobI3VCKCZc9Do=
github.com/buckket/go-blurhash v1.1.0/go.mod h1:aT2iqo5W9vu9GpyoLErKfTHwgODsZp3bQfXjXJUxNb8=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
github.com/bytedance/sonic v1.11.3 h1:jRN+yEjakWh8aK5FzrciUHG8OFXK+4/KrAX/ysEtHAA=
github.com/bytedance/sonic v1.11.3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0=
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0=
github.com/chenzhuoyu/iasm v0.9.1/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/cilium/ebpf v0.9.1 h1:64sn2K3UKw8NbP/blsixRpF3nXuyhz/VjRlRzvlBRu4=
github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdknSRMDrAr8mfxPCfSZolH+/qQnyQ=
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4=
@ -192,8 +189,8 @@ github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/gin-contrib/cors v1.7.1 h1:s9SIppU/rk8enVvkzwiC2VK3UZ/0NNGsWfUKvV55rqs=
github.com/gin-contrib/cors v1.7.1/go.mod h1:n/Zj7B4xyrgk/cX1WCX2dkzFfaNm/xJb6oIUk7WTtps=
github.com/gin-contrib/gzip v1.0.0 h1:UKN586Po/92IDX6ie5CWLgMI81obiIp5nSP85T3wlTk=
github.com/gin-contrib/gzip v1.0.0/go.mod h1:CtG7tQrPB3vIBo6Gat9FVUsis+1emjvQqd66ME5TdnE=
github.com/gin-contrib/gzip v1.0.1 h1:HQ8ENHODeLY7a4g1Au/46Z92bdGFl74OhxcZble9WJE=
github.com/gin-contrib/gzip v1.0.1/go.mod h1:njt428fdUNRvjuJf16tZMYZ2Yl+WQB53X5wmhDwXvC4=
github.com/gin-contrib/sessions v1.0.0 h1:r5GLta4Oy5xo9rAwMHx8B4wLpeRGHMdz9NafzJAdP8Y=
github.com/gin-contrib/sessions v1.0.0/go.mod h1:DN0f4bvpqMQElDdi+gNGScrP2QEI04IErRyMFyorUOI=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
@ -248,8 +245,8 @@ 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.19.0 h1:ol+5Fu+cSq9JD7SoSqe04GMI92cbn0+wvQ3bZ8b/AU4=
github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8=
github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0=
github.com/go-swagger/go-swagger v0.30.6-0.20240418033037-c46c303aaa02 h1:J6YiT/eg3gAfKMdVCkWXe6khsO+nxa8W4URZ4AUqzbA=
github.com/go-swagger/go-swagger v0.30.6-0.20240418033037-c46c303aaa02/go.mod h1:i1/E+d8iPNReSE7y04FaVu5OPKB3il5cn+T1Egogg3I=
@ -468,8 +465,8 @@ github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGd
github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0=
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo=
github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@ -702,8 +699,8 @@ golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8=
golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
golang.org/x/image v0.16.0 h1:9kloLAKhUufZhA12l5fwnx2NZW39/we1UhBesW433jw=
golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@ -765,8 +762,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -832,8 +829,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
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=
@ -966,8 +963,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4=
google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -0,0 +1,34 @@
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package model
// FilterResult is returned along with a filtered status to explain why it was filtered.
//
// swagger:model filterResult
//
// ---
// tags:
// - filters
type FilterResult struct {
// The filter that was matched.
Filter FilterV2 `json:"filter"`
// The keywords within the filter that were matched.
KeywordMatches []string `json:"keyword_matches"`
// The status IDs within the filter that were matched.
StatusMatches []string `json:"status_matches"`
}

View File

@ -0,0 +1,106 @@
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package model
// FilterV2 represents a user-defined filter for determining which statuses should not be shown to the user.
// v2 filters have names and can include multiple phrases and status IDs to filter.
//
// swagger:model filterV2
//
// ---
// tags:
// - filters
type FilterV2 struct {
// The ID of the filter in the database.
ID string `json:"id"`
// The name of the filter.
//
// Example: Linux Words
Title string `json:"title"`
// The contexts in which the filter should be applied.
//
// Minimum items: 1
// Unique: true
// Enum:
// - home
// - notifications
// - public
// - thread
// - account
// Example: ["home", "public"]
Context []FilterContext `json:"context"`
// When the filter should no longer be applied. Null if the filter does not expire.
//
// Example: 2024-02-01T02:57:49Z
ExpiresAt *string `json:"expires_at"`
// The action to be taken when a status matches this filter.
// Enum:
// - warn
// - hide
FilterAction FilterAction `json:"filter_action"`
// The keywords grouped under this filter.
Keywords []FilterKeyword `json:"keywords"`
// The statuses grouped under this filter.
Statuses []FilterStatus `json:"statuses"`
}
// FilterAction is the action to apply to statuses matching a filter.
type FilterAction string
const (
// FilterActionNone filters should not exist, except internally, for partially constructed or invalid filters.
FilterActionNone FilterAction = ""
// FilterActionWarn filters will include this status in API results with a warning.
FilterActionWarn FilterAction = "warn"
// FilterActionHide filters will remove this status from API results.
FilterActionHide FilterAction = "hide"
)
// FilterKeyword represents text to filter within a v2 filter.
//
// swagger:model filterKeyword
//
// ---
// tags:
// - filters
type FilterKeyword struct {
// The ID of the filter keyword entry in the database.
ID string `json:"id"`
// The text to be filtered.
//
// Example: fnord
Keyword string `json:"keyword"`
// Should the filter consider word boundaries?
//
// Example: true
WholeWord bool `json:"whole_word"`
}
// FilterStatus represents a single status to filter within a v2 filter.
//
// swagger:model filterStatus
//
// ---
// tags:
// - filters
type FilterStatus struct {
// The ID of the filter status entry in the database.
ID string `json:"id"`
// The status ID to be filtered.
StatusID string `json:"phrase"`
}

View File

@ -100,6 +100,8 @@ type Status struct {
// so the user may redraft from the source text without the client having to reverse-engineer
// the original text from the HTML content.
Text string `json:"text,omitempty"`
// A list of filters that matched this status and why they matched, if there are any such filters.
Filtered []FilterResult `json:"filtered,omitempty"`
// Additional fields not exposed via JSON
// (used only internally for templating etc).

View File

@ -0,0 +1,45 @@
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Package status represents status filters managed by the user through the API.
package status
import (
"errors"
)
// ErrHideStatus indicates that a status has been filtered and should not be returned at all.
var ErrHideStatus = errors.New("hide status")
// FilterContext determines the filters that apply to a given status or list of statuses.
type FilterContext string
const (
// FilterContextNone means no filters should be applied.
// There are no filters with this context; it's for internal use only.
FilterContextNone FilterContext = ""
// FilterContextHome means this status is being filtered as part of a home or list timeline.
FilterContextHome FilterContext = "home"
// FilterContextNotifications means this status is being filtered as part of the notifications timeline.
FilterContextNotifications FilterContext = "notifications"
// FilterContextPublic means this status is being filtered as part of a public or tag timeline.
FilterContextPublic FilterContext = "public"
// FilterContextThread means this status is being filtered as part of a thread's context.
FilterContextThread FilterContext = "thread"
// FilterContextAccount means this status is being filtered as part of an account's statuses.
FilterContextAccount FilterContext = "account"
)

View File

@ -23,6 +23,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -74,7 +75,7 @@ func (p *Processor) BookmarksGet(ctx context.Context, requestingAccount *gtsmode
}
// Convert the status.
item, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount)
item, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount, statusfilter.FilterContextNone, nil)
if err != nil {
log.Errorf(ctx, "error converting bookmarked status to api: %s", err)
continue

View File

@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -96,9 +97,15 @@ func (p *Processor) StatusesGet(
return nil, gtserror.NewErrorInternalError(err)
}
filters, err := p.state.DB.GetFiltersForAccountID(ctx, requestingAccount.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requestingAccount.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
for _, s := range filtered {
// Convert filtered statuses to API statuses.
item, err := p.converter.StatusToAPIStatus(ctx, s, requestingAccount)
item, err := p.converter.StatusToAPIStatus(ctx, s, requestingAccount, statusfilter.FilterContextAccount, filters)
if err != nil {
log.Errorf(ctx, "error convering to api status: %v", err)
continue

View File

@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -184,7 +185,7 @@ func (p *Processor) GetAPIStatus(
apiStatus *apimodel.Status,
errWithCode gtserror.WithCode,
) {
apiStatus, err := p.converter.StatusToAPIStatus(ctx, target, requester)
apiStatus, err := p.converter.StatusToAPIStatus(ctx, target, requester, statusfilter.FilterContextNone, nil)
if err != nil {
err = gtserror.Newf("error converting status: %w", err)
return nil, gtserror.NewErrorInternalError(err)
@ -192,87 +193,6 @@ func (p *Processor) GetAPIStatus(
return apiStatus, nil
}
// GetVisibleAPIStatuses converts an array of gtsmodel.Status (inputted by next function) into
// API model statuses, checking first for visibility. Please note that all errors will be
// logged at ERROR level, but will not be returned. Callers are likely to run into show-stopping
// errors in the lead-up to this function, whereas calling this should not be a show-stopper.
func (p *Processor) GetVisibleAPIStatuses(
ctx context.Context,
requester *gtsmodel.Account,
next func(int) *gtsmodel.Status,
length int,
) []*apimodel.Status {
return p.getVisibleAPIStatuses(ctx, 3, requester, next, length)
}
// GetVisibleAPIStatusesPaged is functionally equivalent to GetVisibleAPIStatuses(),
// except the statuses are returned as a converted slice of statuses as interface{}.
func (p *Processor) GetVisibleAPIStatusesPaged(
ctx context.Context,
requester *gtsmodel.Account,
next func(int) *gtsmodel.Status,
length int,
) []interface{} {
statuses := p.getVisibleAPIStatuses(ctx, 3, requester, next, length)
if len(statuses) == 0 {
return nil
}
items := make([]interface{}, len(statuses))
for i, status := range statuses {
items[i] = status
}
return items
}
func (p *Processor) getVisibleAPIStatuses(
ctx context.Context,
calldepth int, // used to skip wrapping func above these's names
requester *gtsmodel.Account,
next func(int) *gtsmodel.Status,
length int,
) []*apimodel.Status {
// Start new log entry with
// the above calling func's name.
l := log.
WithContext(ctx).
WithField("caller", log.Caller(calldepth+1))
// Preallocate slice according to expected length.
statuses := make([]*apimodel.Status, 0, length)
for i := 0; i < length; i++ {
// Get next status.
status := next(i)
if status == nil {
continue
}
// Check whether this status is visible to requesting account.
visible, err := p.filter.StatusVisible(ctx, requester, status)
if err != nil {
l.Errorf("error checking status visibility: %v", err)
continue
}
if !visible {
// Not visible to requester.
continue
}
// Convert the status to an API model representation.
apiStatus, err := p.converter.StatusToAPIStatus(ctx, status, requester)
if err != nil {
l.Errorf("error converting status: %v", err)
continue
}
// Append API model to return slice.
statuses = append(statuses, apiStatus)
}
return statuses
}
// InvalidateTimelinedStatus is a shortcut function for invalidating the cached
// representation one status in the home timeline and all list timelines of the
// given accountID. It should only be called in cases where a status update

View File

@ -21,6 +21,7 @@ import (
"context"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -113,7 +114,7 @@ func (p *Processor) packageStatuses(
continue
}
apiStatus, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount)
apiStatus, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount, statusfilter.FilterContextNone, nil)
if err != nil {
log.Debugf(ctx, "skipping status %s because it couldn't be converted to its api representation: %s", status.ID, err)
continue

View File

@ -23,6 +23,7 @@ import (
"strings"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/util"
@ -280,7 +281,15 @@ func TopoSort(apiStatuses []*apimodel.Status, targetAccountID string) {
// ContextGet returns the context (previous and following posts) from the given status ID.
func (p *Processor) ContextGet(ctx context.Context, requestingAccount *gtsmodel.Account, targetStatusID string) (*apimodel.Context, gtserror.WithCode) {
return p.contextGet(ctx, requestingAccount, targetStatusID, p.converter.StatusToAPIStatus)
filters, err := p.state.DB.GetFiltersForAccountID(ctx, requestingAccount.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requestingAccount.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
convert := func(ctx context.Context, status *gtsmodel.Status, requestingAccount *gtsmodel.Account) (*apimodel.Status, error) {
return p.converter.StatusToAPIStatus(ctx, status, requestingAccount, statusfilter.FilterContextThread, filters)
}
return p.contextGet(ctx, requestingAccount, targetStatusID, convert)
}
// WebContextGet is like ContextGet, but is explicitly

View File

@ -24,6 +24,7 @@ import (
"testing"
"github.com/stretchr/testify/suite"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/stream"
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
)
@ -39,7 +40,7 @@ func (suite *StatusUpdateTestSuite) TestStreamNotification() {
suite.NoError(errWithCode)
editedStatus := suite.testStatuses["remote_account_1_status_1"]
apiStatus, err := typeutils.NewConverter(&suite.state).StatusToAPIStatus(context.Background(), editedStatus, account)
apiStatus, err := typeutils.NewConverter(&suite.state).StatusToAPIStatus(context.Background(), editedStatus, account, statusfilter.FilterContextNotifications, nil)
suite.NoError(err)
suite.streamProcessor.StatusUpdate(context.Background(), account, apiStatus, stream.TimelineHome)

View File

@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/superseriousbusiness/gotosocial/internal/oauth"
@ -54,7 +55,7 @@ func (p *Processor) FavedTimelineGet(ctx context.Context, authed *oauth.Auth, ma
continue
}
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, authed.Account)
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, authed.Account, statusfilter.FilterContextNone, nil)
if err != nil {
log.Errorf(ctx, "error convering to api status: %v", err)
continue

View File

@ -23,6 +23,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/filter/visibility"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@ -98,7 +99,13 @@ func HomeTimelineStatusPrepare(state *state.State, converter *typeutils.Converte
return nil, err
}
return converter.StatusToAPIStatus(ctx, status, requestingAccount)
filters, err := state.DB.GetFiltersForAccountID(ctx, requestingAccount.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requestingAccount.ID, err)
return nil, err
}
return converter.StatusToAPIStatus(ctx, status, requestingAccount, statusfilter.FilterContextHome, filters)
}
}

View File

@ -23,6 +23,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/filter/visibility"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@ -110,7 +111,13 @@ func ListTimelineStatusPrepare(state *state.State, converter *typeutils.Converte
return nil, err
}
return converter.StatusToAPIStatus(ctx, status, requestingAccount)
filters, err := state.DB.GetFiltersForAccountID(ctx, requestingAccount.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requestingAccount.ID, err)
return nil, err
}
return converter.StatusToAPIStatus(ctx, status, requestingAccount, statusfilter.FilterContextHome, filters)
}
}

View File

@ -43,6 +43,12 @@ func (p *Processor) NotificationsGet(ctx context.Context, authed *oauth.Auth, ma
return util.EmptyPageableResponse(), nil
}
filters, err := p.state.DB.GetFiltersForAccountID(ctx, authed.Account.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", authed.Account.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
var (
items = make([]interface{}, 0, count)
nextMaxIDValue string
@ -70,7 +76,7 @@ func (p *Processor) NotificationsGet(ctx context.Context, authed *oauth.Auth, ma
continue
}
item, err := p.converter.NotificationToAPINotification(ctx, n)
item, err := p.converter.NotificationToAPINotification(ctx, n, filters)
if err != nil {
log.Debugf(ctx, "skipping notification %s because it couldn't be converted to its api representation: %s", n.ID, err)
continue
@ -104,7 +110,13 @@ func (p *Processor) NotificationGet(ctx context.Context, account *gtsmodel.Accou
return nil, gtserror.NewErrorNotFound(err)
}
apiNotif, err := p.converter.NotificationToAPINotification(ctx, notif)
filters, err := p.state.DB.GetFiltersForAccountID(ctx, account.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", account.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
apiNotif, err := p.converter.NotificationToAPINotification(ctx, notif, filters)
if err != nil {
if errors.Is(err, db.ErrNoEntries) {
return nil, gtserror.NewErrorNotFound(err)

View File

@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -46,6 +47,16 @@ func (p *Processor) PublicTimelineGet(
items = make([]any, 0, limit)
)
var filters []*gtsmodel.Filter
if requester != nil {
var err error
filters, err = p.state.DB.GetFiltersForAccountID(ctx, requester.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requester.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
}
// Try a few times to select appropriate public
// statuses from the db, paging up or down to
// reattempt if nothing suitable is found.
@ -87,7 +98,10 @@ outer:
continue inner
}
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requester)
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requester, statusfilter.FilterContextPublic, filters)
if errors.Is(err, statusfilter.ErrHideStatus) {
continue
}
if err != nil {
log.Errorf(ctx, "error converting to api status: %v", err)
continue inner

View File

@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@ -111,6 +112,12 @@ func (p *Processor) packageTagResponse(
prevMinIDValue = statuses[0].ID
)
filters, err := p.state.DB.GetFiltersForAccountID(ctx, requestingAcct.ID)
if err != nil {
err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requestingAcct.ID, err)
return nil, gtserror.NewErrorInternalError(err)
}
for _, s := range statuses {
timelineable, err := p.filter.StatusTagTimelineable(ctx, requestingAcct, s)
if err != nil {
@ -122,7 +129,10 @@ func (p *Processor) packageTagResponse(
continue
}
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requestingAcct)
apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requestingAcct, statusfilter.FilterContextPublic, filters)
if errors.Is(err, statusfilter.ErrHideStatus) {
continue
}
if err != nil {
log.Errorf(ctx, "error converting to api status: %v", err)
continue

View File

@ -28,6 +28,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/ap"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/id"
"github.com/superseriousbusiness/gotosocial/internal/messages"
@ -154,6 +155,8 @@ func (suite *FromClientAPITestSuite) statusJSON(
ctx,
status,
requestingAccount,
statusfilter.FilterContextNone,
nil,
)
if err != nil {
suite.FailNow(err.Error())
@ -258,7 +261,7 @@ func (suite *FromClientAPITestSuite) TestProcessCreateStatusWithNotification() {
suite.FailNow("timed out waiting for new status notification")
}
apiNotif, err := testStructs.TypeConverter.NotificationToAPINotification(ctx, notif)
apiNotif, err := testStructs.TypeConverter.NotificationToAPINotification(ctx, notif, nil)
if err != nil {
suite.FailNow(err.Error())
}

View File

@ -467,7 +467,12 @@ func (s *Surface) Notify(
unlock()
// Stream notification to the user.
apiNotif, err := s.Converter.NotificationToAPINotification(ctx, notif)
filters, err := s.State.DB.GetFiltersForAccountID(ctx, targetAccount.ID)
if err != nil {
return gtserror.Newf("couldn't retrieve filters for account %s: %w", targetAccount.ID, err)
}
apiNotif, err := s.Converter.NotificationToAPINotification(ctx, notif, filters)
if err != nil {
return gtserror.Newf("error converting notification to api representation: %w", err)
}

View File

@ -22,6 +22,7 @@ import (
"errors"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@ -111,6 +112,11 @@ func (s *Surface) timelineAndNotifyStatusForFollowers(
continue
}
filters, err := s.State.DB.GetFiltersForAccountID(ctx, follow.AccountID)
if err != nil {
return gtserror.Newf("couldn't retrieve filters for account %s: %w", follow.AccountID, err)
}
// Add status to any relevant lists
// for this follow, if applicable.
s.listTimelineStatusForFollow(
@ -118,6 +124,7 @@ func (s *Surface) timelineAndNotifyStatusForFollowers(
status,
follow,
&errs,
filters,
)
// Add status to home timeline for owner
@ -129,6 +136,7 @@ func (s *Surface) timelineAndNotifyStatusForFollowers(
follow.Account,
status,
stream.TimelineHome,
filters,
)
if err != nil {
errs.Appendf("error home timelining status: %w", err)
@ -180,6 +188,7 @@ func (s *Surface) listTimelineStatusForFollow(
status *gtsmodel.Status,
follow *gtsmodel.Follow,
errs *gtserror.MultiError,
filters []*gtsmodel.Filter,
) {
// To put this status in appropriate list timelines,
// we need to get each listEntry that pertains to
@ -222,6 +231,7 @@ func (s *Surface) listTimelineStatusForFollow(
follow.Account,
status,
stream.TimelineList+":"+listEntry.ListID, // key streamType to this specific list
filters,
); err != nil {
errs.Appendf("error adding status to timeline for list %s: %w", listEntry.ListID, err)
// implicit continue
@ -332,6 +342,7 @@ func (s *Surface) timelineStatus(
account *gtsmodel.Account,
status *gtsmodel.Status,
streamType string,
filters []*gtsmodel.Filter,
) (bool, error) {
// Ingest status into given timeline using provided function.
if inserted, err := ingest(ctx, timelineID, status); err != nil {
@ -343,7 +354,12 @@ func (s *Surface) timelineStatus(
}
// The status was inserted so stream it to the user.
apiStatus, err := s.Converter.StatusToAPIStatus(ctx, status, account)
apiStatus, err := s.Converter.StatusToAPIStatus(ctx,
status,
account,
statusfilter.FilterContextHome,
filters,
)
if err != nil {
err = gtserror.Newf("error converting status %s to frontend representation: %w", status.ID, err)
return true, err
@ -457,6 +473,11 @@ func (s *Surface) timelineStatusUpdateForFollowers(
continue
}
filters, err := s.State.DB.GetFiltersForAccountID(ctx, follow.AccountID)
if err != nil {
return gtserror.Newf("couldn't retrieve filters for account %s: %w", follow.AccountID, err)
}
// Add status to any relevant lists
// for this follow, if applicable.
s.listTimelineStatusUpdateForFollow(
@ -464,6 +485,7 @@ func (s *Surface) timelineStatusUpdateForFollowers(
status,
follow,
&errs,
filters,
)
// Add status to home timeline for owner
@ -473,6 +495,7 @@ func (s *Surface) timelineStatusUpdateForFollowers(
follow.Account,
status,
stream.TimelineHome,
filters,
)
if err != nil {
errs.Appendf("error home timelining status: %w", err)
@ -490,6 +513,7 @@ func (s *Surface) listTimelineStatusUpdateForFollow(
status *gtsmodel.Status,
follow *gtsmodel.Follow,
errs *gtserror.MultiError,
filters []*gtsmodel.Filter,
) {
// To put this status in appropriate list timelines,
// we need to get each listEntry that pertains to
@ -530,6 +554,7 @@ func (s *Surface) listTimelineStatusUpdateForFollow(
follow.Account,
status,
stream.TimelineList+":"+listEntry.ListID, // key streamType to this specific list
filters,
); err != nil {
errs.Appendf("error adding status to timeline for list %s: %w", listEntry.ListID, err)
// implicit continue
@ -544,8 +569,13 @@ func (s *Surface) timelineStreamStatusUpdate(
account *gtsmodel.Account,
status *gtsmodel.Status,
streamType string,
filters []*gtsmodel.Filter,
) error {
apiStatus, err := s.Converter.StatusToAPIStatus(ctx, status, account)
apiStatus, err := s.Converter.StatusToAPIStatus(ctx, status, account, statusfilter.FilterContextHome, filters)
if errors.Is(err, statusfilter.ErrHideStatus) {
// Don't put this status in the stream.
return nil
}
if err != nil {
err = gtserror.Newf("error converting status %s to frontend representation: %w", status.ID, err)
return err

View File

@ -24,6 +24,7 @@ import (
"codeberg.org/gruf/go-kv"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/log"
)
@ -121,6 +122,12 @@ func (t *timeline) prepareXBetweenIDs(ctx context.Context, amount int, behindID
for e, entry := range toPrepare {
prepared, err := t.prepareFunction(ctx, t.timelineID, entry.itemID)
if err != nil {
if errors.Is(err, statusfilter.ErrHideStatus) {
// This item has been filtered out by the requesting user's filters.
// Remove it and skip past it.
t.items.data.Remove(e)
continue
}
if errors.Is(err, db.ErrNoEntries) {
// ErrNoEntries means something has been deleted,
// so we'll likely not be able to ever prepare this.

View File

@ -473,16 +473,19 @@ const (
type TypeUtilsTestSuite struct {
suite.Suite
db db.DB
state state.State
testAccounts map[string]*gtsmodel.Account
testStatuses map[string]*gtsmodel.Status
testAttachments map[string]*gtsmodel.MediaAttachment
testPeople map[string]vocab.ActivityStreamsPerson
testEmojis map[string]*gtsmodel.Emoji
testReports map[string]*gtsmodel.Report
testMentions map[string]*gtsmodel.Mention
testPollVotes map[string]*gtsmodel.PollVote
db db.DB
state state.State
testAccounts map[string]*gtsmodel.Account
testStatuses map[string]*gtsmodel.Status
testAttachments map[string]*gtsmodel.MediaAttachment
testPeople map[string]vocab.ActivityStreamsPerson
testEmojis map[string]*gtsmodel.Emoji
testReports map[string]*gtsmodel.Report
testMentions map[string]*gtsmodel.Mention
testPollVotes map[string]*gtsmodel.PollVote
testFilters map[string]*gtsmodel.Filter
testFilterKeywords map[string]*gtsmodel.FilterKeyword
testFilterStatues map[string]*gtsmodel.FilterStatus
typeconverter *typeutils.Converter
}
@ -506,6 +509,9 @@ func (suite *TypeUtilsTestSuite) SetupTest() {
suite.testReports = testrig.NewTestReports()
suite.testMentions = testrig.NewTestMentions()
suite.testPollVotes = testrig.NewTestPollVotes()
suite.testFilters = testrig.NewTestFilters()
suite.testFilterKeywords = testrig.NewTestFilterKeywords()
suite.testFilterStatues = testrig.NewTestFilterStatuses()
suite.typeconverter = typeutils.NewConverter(&suite.state)
testrig.StandardDBSetup(suite.db, nil)

View File

@ -22,17 +22,21 @@ import (
"errors"
"fmt"
"math"
"regexp"
"strconv"
"strings"
"time"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/language"
"github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/text"
"github.com/superseriousbusiness/gotosocial/internal/uris"
"github.com/superseriousbusiness/gotosocial/internal/util"
)
@ -684,12 +688,19 @@ func (c *Converter) TagToAPITag(ctx context.Context, t *gtsmodel.Tag, stubHistor
// (frontend) representation for serialization on the API.
//
// Requesting account can be nil.
//
// Filter context can be the empty string if these statuses are not being filtered.
//
// If there is a matching "hide" filter, the returned status will be nil with a ErrHideStatus error;
// callers need to handle that case by excluding it from results.
func (c *Converter) StatusToAPIStatus(
ctx context.Context,
s *gtsmodel.Status,
requestingAccount *gtsmodel.Account,
filterContext statusfilter.FilterContext,
filters []*gtsmodel.Filter,
) (*apimodel.Status, error) {
apiStatus, err := c.statusToFrontend(ctx, s, requestingAccount)
apiStatus, err := c.statusToFrontend(ctx, s, requestingAccount, filterContext, filters)
if err != nil {
return nil, err
}
@ -704,6 +715,142 @@ func (c *Converter) StatusToAPIStatus(
return apiStatus, nil
}
// statusToAPIFilterResults applies filters to a status and returns an API filter result object.
// The result may be nil if no filters matched.
// If the status should not be returned at all, it returns the ErrHideStatus error.
func (c *Converter) statusToAPIFilterResults(
ctx context.Context,
s *gtsmodel.Status,
requestingAccount *gtsmodel.Account,
filterContext statusfilter.FilterContext,
filters []*gtsmodel.Filter,
) ([]apimodel.FilterResult, error) {
if filterContext == "" || len(filters) == 0 || s.AccountID == requestingAccount.ID {
return nil, nil
}
filterResults := make([]apimodel.FilterResult, 0, len(filters))
now := time.Now()
for _, filter := range filters {
if !filterAppliesInContext(filter, filterContext) {
// Filter doesn't apply to this context.
continue
}
if !filter.ExpiresAt.IsZero() && filter.ExpiresAt.Before(now) {
// Filter is expired.
continue
}
// List all matching keywords.
keywordMatches := make([]string, 0, len(filter.Keywords))
fields := filterableTextFields(s)
for _, filterKeyword := range filter.Keywords {
wholeWord := util.PtrValueOr(filterKeyword.WholeWord, false)
wordBreak := ``
if wholeWord {
wordBreak = `\b`
}
re, err := regexp.Compile(`(?i)` + wordBreak + regexp.QuoteMeta(filterKeyword.Keyword) + wordBreak)
if err != nil {
return nil, err
}
var isMatch bool
for _, field := range fields {
if re.MatchString(field) {
isMatch = true
break
}
}
if isMatch {
keywordMatches = append(keywordMatches, filterKeyword.Keyword)
}
}
// A status has only one ID. Not clear why this is a list in the Mastodon API.
statusMatches := make([]string, 0, 1)
for _, filterStatus := range filter.Statuses {
if s.ID == filterStatus.StatusID {
statusMatches = append(statusMatches, filterStatus.StatusID)
break
}
}
if len(keywordMatches) > 0 || len(statusMatches) > 0 {
switch filter.Action {
case gtsmodel.FilterActionWarn:
// Record what matched.
apiFilter, err := c.FilterToAPIFilterV2(ctx, filter)
if err != nil {
return nil, err
}
filterResults = append(filterResults, apimodel.FilterResult{
Filter: *apiFilter,
KeywordMatches: keywordMatches,
StatusMatches: statusMatches,
})
case gtsmodel.FilterActionHide:
// Don't show this status. Immediate return.
return nil, statusfilter.ErrHideStatus
}
}
}
return filterResults, nil
}
// filterableTextFields returns all text from a status that we might want to filter on:
// - content
// - content warning
// - media descriptions
// - poll options
func filterableTextFields(s *gtsmodel.Status) []string {
fieldCount := 2 + len(s.Attachments)
if s.Poll != nil {
fieldCount += len(s.Poll.Options)
}
fields := make([]string, 0, fieldCount)
if s.Content != "" {
fields = append(fields, text.SanitizeToPlaintext(s.Content))
}
if s.ContentWarning != "" {
fields = append(fields, s.ContentWarning)
}
for _, attachment := range s.Attachments {
if attachment.Description != "" {
fields = append(fields, attachment.Description)
}
}
if s.Poll != nil {
for _, option := range s.Poll.Options {
if option != "" {
fields = append(fields, option)
}
}
}
return fields
}
// filterAppliesInContext returns whether a given filter applies in a given context.
func filterAppliesInContext(filter *gtsmodel.Filter, filterContext statusfilter.FilterContext) bool {
switch filterContext {
case statusfilter.FilterContextHome:
return util.PtrValueOr(filter.ContextHome, false)
case statusfilter.FilterContextNotifications:
return util.PtrValueOr(filter.ContextNotifications, false)
case statusfilter.FilterContextPublic:
return util.PtrValueOr(filter.ContextPublic, false)
case statusfilter.FilterContextThread:
return util.PtrValueOr(filter.ContextThread, false)
case statusfilter.FilterContextAccount:
return util.PtrValueOr(filter.ContextAccount, false)
}
return false
}
// StatusToWebStatus converts a gts model status into an
// api representation suitable for serving into a web template.
//
@ -713,7 +860,7 @@ func (c *Converter) StatusToWebStatus(
s *gtsmodel.Status,
requestingAccount *gtsmodel.Account,
) (*apimodel.Status, error) {
webStatus, err := c.statusToFrontend(ctx, s, requestingAccount)
webStatus, err := c.statusToFrontend(ctx, s, requestingAccount, statusfilter.FilterContextNone, nil)
if err != nil {
return nil, err
}
@ -815,6 +962,8 @@ func (c *Converter) statusToFrontend(
ctx context.Context,
s *gtsmodel.Status,
requestingAccount *gtsmodel.Account,
filterContext statusfilter.FilterContext,
filters []*gtsmodel.Filter,
) (*apimodel.Status, error) {
// Try to populate status struct pointer fields.
// We can continue in many cases of partial failure,
@ -913,7 +1062,11 @@ func (c *Converter) statusToFrontend(
}
if s.BoostOf != nil {
reblog, err := c.StatusToAPIStatus(ctx, s.BoostOf, requestingAccount)
reblog, err := c.StatusToAPIStatus(ctx, s.BoostOf, requestingAccount, filterContext, filters)
if errors.Is(err, statusfilter.ErrHideStatus) {
// If we'd hide the original status, hide the boost.
return nil, err
}
if err != nil {
return nil, gtserror.Newf("error converting boosted status: %w", err)
}
@ -977,6 +1130,13 @@ func (c *Converter) statusToFrontend(
s.URL = s.URI
}
// Apply filters.
filterResults, err := c.statusToAPIFilterResults(ctx, s, requestingAccount, filterContext, filters)
if err != nil {
return nil, fmt.Errorf("error applying filters: %w", err)
}
apiStatus.Filtered = filterResults
return apiStatus, nil
}
@ -1252,7 +1412,7 @@ func (c *Converter) RelationshipToAPIRelationship(ctx context.Context, r *gtsmod
}
// NotificationToAPINotification converts a gts notification into a api notification
func (c *Converter) NotificationToAPINotification(ctx context.Context, n *gtsmodel.Notification) (*apimodel.Notification, error) {
func (c *Converter) NotificationToAPINotification(ctx context.Context, n *gtsmodel.Notification, filters []*gtsmodel.Filter) (*apimodel.Notification, error) {
if n.TargetAccount == nil {
tAccount, err := c.state.DB.GetAccountByID(ctx, n.TargetAccountID)
if err != nil {
@ -1293,7 +1453,7 @@ func (c *Converter) NotificationToAPINotification(ctx context.Context, n *gtsmod
}
var err error
apiStatus, err = c.StatusToAPIStatus(ctx, n.Status, n.TargetAccount)
apiStatus, err = c.StatusToAPIStatus(ctx, n.Status, n.TargetAccount, statusfilter.FilterContextNotifications, filters)
if err != nil {
return nil, fmt.Errorf("NotificationToapi: error converting status to api: %s", err)
}
@ -1446,7 +1606,7 @@ func (c *Converter) ReportToAdminAPIReport(ctx context.Context, r *gtsmodel.Repo
}
}
for _, s := range r.Statuses {
status, err := c.StatusToAPIStatus(ctx, s, requestingAccount)
status, err := c.StatusToAPIStatus(ctx, s, requestingAccount, statusfilter.FilterContextNone, nil)
if err != nil {
return nil, fmt.Errorf("ReportToAdminAPIReport: error converting status with id %s to api status: %w", s.ID, err)
}
@ -1687,6 +1847,55 @@ func (c *Converter) FilterKeywordToAPIFilterV1(ctx context.Context, filterKeywor
}
filter := filterKeyword.Filter
return &apimodel.FilterV1{
// v1 filters have a single keyword each, so we use the filter keyword ID as the v1 filter ID.
ID: filterKeyword.ID,
Phrase: filterKeyword.Keyword,
Context: filterToAPIFilterContexts(filter),
WholeWord: util.PtrValueOr(filterKeyword.WholeWord, false),
ExpiresAt: filterExpiresAtToAPIFilterExpiresAt(filter.ExpiresAt),
Irreversible: filter.Action == gtsmodel.FilterActionHide,
}, nil
}
// FilterToAPIFilterV2 converts one GTS model filter into an API v2 filter.
func (c *Converter) FilterToAPIFilterV2(ctx context.Context, filter *gtsmodel.Filter) (*apimodel.FilterV2, error) {
apiFilterKeywords := make([]apimodel.FilterKeyword, 0, len(filter.Keywords))
for _, filterKeyword := range filter.Keywords {
apiFilterKeywords = append(apiFilterKeywords, apimodel.FilterKeyword{
ID: filterKeyword.ID,
Keyword: filterKeyword.Keyword,
WholeWord: util.PtrValueOr(filterKeyword.WholeWord, false),
})
}
apiFilterStatuses := make([]apimodel.FilterStatus, 0, len(filter.Keywords))
for _, filterStatus := range filter.Statuses {
apiFilterStatuses = append(apiFilterStatuses, apimodel.FilterStatus{
ID: filterStatus.ID,
StatusID: filterStatus.StatusID,
})
}
return &apimodel.FilterV2{
ID: filter.ID,
Title: filter.Title,
Context: filterToAPIFilterContexts(filter),
ExpiresAt: filterExpiresAtToAPIFilterExpiresAt(filter.ExpiresAt),
FilterAction: filterActionToAPIFilterAction(filter.Action),
Keywords: apiFilterKeywords,
Statuses: apiFilterStatuses,
}, nil
}
func filterExpiresAtToAPIFilterExpiresAt(expiresAt time.Time) *string {
if expiresAt.IsZero() {
return nil
}
return util.Ptr(util.FormatISO8601(expiresAt))
}
func filterToAPIFilterContexts(filter *gtsmodel.Filter) []apimodel.FilterContext {
apiContexts := make([]apimodel.FilterContext, 0, apimodel.FilterContextNumValues)
if util.PtrValueOr(filter.ContextHome, false) {
apiContexts = append(apiContexts, apimodel.FilterContextHome)
@ -1703,21 +1912,17 @@ func (c *Converter) FilterKeywordToAPIFilterV1(ctx context.Context, filterKeywor
if util.PtrValueOr(filter.ContextAccount, false) {
apiContexts = append(apiContexts, apimodel.FilterContextAccount)
}
return apiContexts
}
var expiresAt *string
if !filter.ExpiresAt.IsZero() {
expiresAt = util.Ptr(util.FormatISO8601(filter.ExpiresAt))
func filterActionToAPIFilterAction(m gtsmodel.FilterAction) apimodel.FilterAction {
switch m {
case gtsmodel.FilterActionWarn:
return apimodel.FilterActionWarn
case gtsmodel.FilterActionHide:
return apimodel.FilterActionHide
}
return &apimodel.FilterV1{
// v1 filters have a single keyword each, so we use the filter keyword ID as the v1 filter ID.
ID: filterKeyword.ID,
Phrase: filterKeyword.Keyword,
Context: apiContexts,
WholeWord: util.PtrValueOr(filterKeyword.WholeWord, false),
ExpiresAt: expiresAt,
Irreversible: filter.Action == gtsmodel.FilterActionHide,
}, nil
return apimodel.FilterActionNone
}
// convertEmojisToAPIEmojis will convert a slice of GTS model emojis to frontend API model emojis, falling back to IDs if no GTS models supplied.

View File

@ -25,6 +25,7 @@ import (
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/testrig"
)
@ -427,7 +428,7 @@ func (suite *InternalToFrontendTestSuite) TestLocalInstanceAccountToFrontendBloc
func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() {
testStatus := suite.testStatuses["admin_account_status_1"]
requestingAccount := suite.testAccounts["local_account_1"]
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount)
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount, statusfilter.FilterContextNone, nil)
suite.NoError(err)
b, err := json.MarshalIndent(apiStatus, "", " ")
@ -537,11 +538,186 @@ func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() {
}`, string(b))
}
// Test that a status which is filtered with a warn filter by the requesting user has `filtered` set correctly.
func (suite *InternalToFrontendTestSuite) TestWarnFilteredStatusToFrontend() {
testStatus := suite.testStatuses["admin_account_status_1"]
testStatus.Content += " fnord"
testStatus.Text += " fnord"
requestingAccount := suite.testAccounts["local_account_1"]
expectedMatchingFilter := suite.testFilters["local_account_1_filter_1"]
expectedMatchingFilterKeyword := suite.testFilterKeywords["local_account_1_filter_1_keyword_1"]
expectedMatchingFilterKeyword.Filter = expectedMatchingFilter
expectedMatchingFilter.Keywords = []*gtsmodel.FilterKeyword{expectedMatchingFilterKeyword}
requestingAccountFilters := []*gtsmodel.Filter{expectedMatchingFilter}
apiStatus, err := suite.typeconverter.StatusToAPIStatus(
context.Background(),
testStatus,
requestingAccount,
statusfilter.FilterContextHome,
requestingAccountFilters,
)
suite.NoError(err)
b, err := json.MarshalIndent(apiStatus, "", " ")
suite.NoError(err)
suite.Equal(`{
"id": "01F8MH75CBF9JFX4ZAD54N0W0R",
"created_at": "2021-10-20T11:36:45.000Z",
"in_reply_to_id": null,
"in_reply_to_account_id": null,
"sensitive": false,
"spoiler_text": "",
"visibility": "public",
"language": "en",
"uri": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R",
"url": "http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R",
"replies_count": 1,
"reblogs_count": 0,
"favourites_count": 1,
"favourited": true,
"reblogged": false,
"muted": false,
"bookmarked": true,
"pinned": false,
"content": "hello world! #welcome ! first post on the instance :rainbow: ! fnord",
"reblog": null,
"application": {
"name": "superseriousbusiness",
"website": "https://superserious.business"
},
"account": {
"id": "01F8MH17FWEB39HZJ76B6VXSKF",
"username": "admin",
"acct": "admin",
"display_name": "",
"locked": false,
"discoverable": true,
"bot": false,
"created_at": "2022-05-17T13:10:59.000Z",
"note": "",
"url": "http://localhost:8080/@admin",
"avatar": "",
"avatar_static": "",
"header": "http://localhost:8080/assets/default_header.png",
"header_static": "http://localhost:8080/assets/default_header.png",
"followers_count": 1,
"following_count": 1,
"statuses_count": 4,
"last_status_at": "2021-10-20T10:41:37.000Z",
"emojis": [],
"fields": [],
"enable_rss": true,
"role": {
"name": "admin"
}
},
"media_attachments": [
{
"id": "01F8MH6NEM8D7527KZAECTCR76",
"type": "image",
"url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg",
"text_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg",
"preview_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpg",
"remote_url": null,
"preview_remote_url": null,
"meta": {
"original": {
"width": 1200,
"height": 630,
"size": "1200x630",
"aspect": 1.9047619
},
"small": {
"width": 256,
"height": 134,
"size": "256x134",
"aspect": 1.9104477
},
"focus": {
"x": 0,
"y": 0
}
},
"description": "Black and white image of some 50's style text saying: Welcome On Board",
"blurhash": "LNJRdVM{00Rj%Mayt7j[4nWBofRj"
}
],
"mentions": [],
"tags": [
{
"name": "welcome",
"url": "http://localhost:8080/tags/welcome"
}
],
"emojis": [
{
"shortcode": "rainbow",
"url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png",
"static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png",
"visible_in_picker": true,
"category": "reactions"
}
],
"card": null,
"poll": null,
"text": "hello world! #welcome ! first post on the instance :rainbow: ! fnord",
"filtered": [
{
"filter": {
"id": "01HN26VM6KZTW1ANNRVSBMA461",
"title": "fnord",
"context": [
"home",
"public"
],
"expires_at": null,
"filter_action": "warn",
"keywords": [
{
"id": "01HN272TAVWAXX72ZX4M8JZ0PS",
"keyword": "fnord",
"whole_word": true
}
],
"statuses": []
},
"keyword_matches": [
"fnord"
],
"status_matches": []
}
]
}`, string(b))
}
// Test that a status which is filtered with a hide filter by the requesting user results in the ErrHideStatus error.
func (suite *InternalToFrontendTestSuite) TestHideFilteredStatusToFrontend() {
testStatus := suite.testStatuses["admin_account_status_1"]
testStatus.Content += " fnord"
testStatus.Text += " fnord"
requestingAccount := suite.testAccounts["local_account_1"]
expectedMatchingFilter := suite.testFilters["local_account_1_filter_1"]
expectedMatchingFilter.Action = gtsmodel.FilterActionHide
expectedMatchingFilterKeyword := suite.testFilterKeywords["local_account_1_filter_1_keyword_1"]
expectedMatchingFilterKeyword.Filter = expectedMatchingFilter
expectedMatchingFilter.Keywords = []*gtsmodel.FilterKeyword{expectedMatchingFilterKeyword}
requestingAccountFilters := []*gtsmodel.Filter{expectedMatchingFilter}
_, err := suite.typeconverter.StatusToAPIStatus(
context.Background(),
testStatus,
requestingAccount,
statusfilter.FilterContextHome,
requestingAccountFilters,
)
suite.ErrorIs(err, statusfilter.ErrHideStatus)
}
func (suite *InternalToFrontendTestSuite) TestStatusToFrontendUnknownAttachments() {
testStatus := suite.testStatuses["remote_account_2_status_1"]
requestingAccount := suite.testAccounts["admin_account"]
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount)
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount, statusfilter.FilterContextNone, nil)
suite.NoError(err)
b, err := json.MarshalIndent(apiStatus, "", " ")
@ -774,7 +950,7 @@ func (suite *InternalToFrontendTestSuite) TestStatusToFrontendUnknownLanguage()
*testStatus = *suite.testStatuses["admin_account_status_1"]
testStatus.Language = ""
requestingAccount := suite.testAccounts["local_account_1"]
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount)
apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount, statusfilter.FilterContextNone, nil)
suite.NoError(err)
b, err := json.MarshalIndent(apiStatus, "", " ")

View File

@ -527,6 +527,24 @@ func (c *Cache[T]) Len() int {
return l
}
// Debug returns debug stats about cache.
func (c *Cache[T]) Debug() map[string]any {
m := make(map[string]any)
c.mutex.Lock()
m["lru"] = c.lru.len
indices := make(map[string]any)
m["indices"] = indices
for i := range c.indices {
var n uint64
for _, list := range c.indices[i].data {
n += uint64(list.len)
}
indices[c.indices[i].name] = n
}
c.mutex.Unlock()
return m
}
// Cap returns the maximum capacity (size) of cache.
func (c *Cache[T]) Cap() int {
c.mutex.Lock()

View File

@ -205,6 +205,24 @@ func (q *Queue[T]) Len() int {
return l
}
// Debug returns debug stats about queue.
func (q *Queue[T]) Debug() map[string]any {
m := make(map[string]any)
q.mutex.Lock()
m["queue"] = q.queue.len
indices := make(map[string]any)
m["indices"] = indices
for i := range q.indices {
var n uint64
for _, list := range q.indices[i].data {
n += uint64(list.len)
}
indices[q.indices[i].name] = n
}
q.mutex.Unlock()
return m
}
func (q *Queue[T]) pop_n(n int, next func() *list_elem) []T {
if next == nil {
panic("nil fn")

View File

@ -64,6 +64,24 @@ func (q *QueueCtx[T]) Wait() <-chan struct{} {
return ctx
}
// Debug returns debug stats about queue.
func (q *QueueCtx[T]) Debug() map[string]any {
m := make(map[string]any)
q.mutex.Lock()
m["queue"] = q.queue.len
indices := make(map[string]any)
m["indices"] = indices
for i := range q.indices {
var n uint64
for _, list := range q.indices[i].data {
n += uint64(list.len)
}
indices[q.indices[i].name] = n
}
q.mutex.Unlock()
return m
}
func (q *QueueCtx[T]) pop(ctx context.Context, next func() *list_elem) (T, bool) {
if next == nil {
panic("nil fn")

View File

@ -1,3 +1,6 @@
[submodule "tools/asm2asm"]
[submodule "cloudwego"]
path = tools/asm2asm
url = https://github.com/chenzhuoyu/asm2asm
url = https://github.com/cloudwego/asm2asm.git
[submodule "tools/simde"]
path = tools/simde
url = https://github.com/simd-everywhere/simde.git

View File

@ -1,116 +0,0 @@
#
# Copyright 2021 ByteDance Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
ARCH := avx avx2 sse
TMP_DIR := output
OUT_DIR := internal/native
SRC_FILE := native/native.c
CPU_avx := amd64
CPU_avx2 := amd64
CPU_sse := amd64
TMPL_avx := native_test fastint_test fastfloat_test native_amd64 recover_test
TMPL_avx2 := native_test fastint_test fastfloat_test native_amd64 recover_test
TMPL_sse := native_test fastint_test fastfloat_test native_amd64 recover_test
CFLAGS_avx := -msse -mno-sse4 -mavx -mpclmul -mno-avx2 -mstack-alignment=0 -DUSE_AVX=1 -DUSE_AVX2=0
CFLAGS_avx2 := -msse -mno-sse4 -mavx -mpclmul -mavx2 -mstack-alignment=0 -DUSE_AVX=1 -DUSE_AVX2=1
CFLAGS_sse := -msse -mno-sse4 -mno-avx -mno-avx2 -mpclmul
CC_amd64 := clang
ASM2ASM_amd64 := tools/asm2asm/asm2asm.py
CFLAGS := -mno-red-zone
CFLAGS += -target x86_64-apple-macos11
CFLAGS += -fno-asynchronous-unwind-tables
CFLAGS += -fno-builtin
CFLAGS += -fno-exceptions
CFLAGS += -fno-rtti
CFLAGS += -fno-stack-protector
CFLAGS += -nostdlib
CFLAGS += -O3
CFLAGS += -Wall -Werror
NATIVE_SRC := $(wildcard native/*.h)
NATIVE_SRC += $(wildcard native/*.c)
.PHONY: all clean ${ARCH}
define build_tmpl
$(eval @arch := $(1))
$(eval @tmpl := $(2))
$(eval @dest := $(3))
$(eval @cpu := $(4))
${@dest}: ${@tmpl}
mkdir -p $(dir ${@dest})
echo '// +build ${@cpu}' > ${@dest}
echo >> ${@dest}
echo >> ${@dest}
echo '// Code generated by Makefile, DO NOT EDIT.' >> ${@dest}
echo >> ${@dest}
sed -e 's/{{PACKAGE}}/${@arch}/g' ${@tmpl} >> ${@dest}
endef
define build_arch
$(eval @cpu := $(value CPU_$(1)))
$(eval @deps := $(foreach tmpl,$(value TMPL_$(1)),${OUT_DIR}/$(1)/${tmpl}.go))
$(eval @asmin := ${TMP_DIR}/$(1)/native.s)
$(eval @asmout := ${OUT_DIR}/$(1)/native_text_${@cpu}.go)
$(eval @stubin := ${OUT_DIR}/native_${@cpu}.tmpl)
$(eval @stubout := ${OUT_DIR}/$(1)/native_${@cpu}.go)
$(1): ${@asmout} ${@deps}
${@asmout}: ${@stubout} ${NATIVE_SRC}
mkdir -p ${TMP_DIR}/$(1)
$${CC_${@cpu}} $${CFLAGS} $${CFLAGS_$(1)} -S -o ${TMP_DIR}/$(1)/native.s ${SRC_FILE}
python3 $${ASM2ASM_${@cpu}} -r ${@stubout} ${TMP_DIR}/$(1)/native.s
$(eval $(call \
build_tmpl, \
$(1), \
${@stubin}, \
${@stubout} \
))
$(foreach \
tmpl, \
$(value TMPL_$(1)), \
$(eval $(call \
build_tmpl, \
$(1), \
${OUT_DIR}/${tmpl}.tmpl, \
${OUT_DIR}/$(1)/${tmpl}.go, \
$(value CPU_$(1)) \
)) \
)
endef
all: ${ARCH}
clean:
for arch in ${ARCH}; do \
rm -vfr ${TMP_DIR}/$${arch}; \
rm -vfr ${OUT_DIR}/$${arch}; \
done
$(foreach \
arch, \
${ARCH}, \
$(eval $(call build_arch,${arch})) \
)

View File

@ -1,3 +1,4 @@
//go:build (amd64 && go1.16 && !go1.23) || (arm64 && go1.20 && !go1.23)
// +build amd64,go1.16,!go1.23 arm64,go1.20,!go1.23
/*
@ -27,6 +28,7 @@ import (
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
uq `github.com/bytedance/sonic/unquote`
`github.com/bytedance/sonic/utf8`
)
var typeByte = rt.UnpackEface(byte(0)).Type
@ -101,7 +103,7 @@ func (self *Parser) skip() (int, types.ParsingError) {
func (self *Node) encodeInterface(buf *[]byte) error {
//WARN: NOT compatible with json.Encoder
return encoder.EncodeInto(buf, self.packAny(), 0)
return encoder.EncodeInto(buf, self.packAny(), encoder.NoEncoderNewline)
}
func (self *Parser) skipFast() (int, types.ParsingError) {
@ -112,13 +114,22 @@ func (self *Parser) skipFast() (int, types.ParsingError) {
return start, 0
}
func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
fsm := types.NewStateMachine()
func (self *Parser) getByPath(validate bool, path ...interface{}) (int, types.ParsingError) {
var fsm *types.StateMachine
if validate {
fsm = types.NewStateMachine()
}
start := native.GetByPath(&self.s, &self.p, &path, fsm)
types.FreeStateMachine(fsm)
if validate {
types.FreeStateMachine(fsm)
}
runtime.KeepAlive(path)
if start < 0 {
return self.p, types.ParsingError(-start)
}
return start, 0
}
func validate_utf8(str string) bool {
return utf8.ValidateString(str)
}

View File

@ -19,67 +19,69 @@
package ast
import (
`encoding/json`
`encoding/json`
`unicode/utf8`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
func init() {
println("WARNING:(ast) sonic only supports Go1.16~1.22, but your environment is not suitable")
println("WARNING:(ast) sonic only supports Go1.16~1.22, but your environment is not suitable")
}
func quote(buf *[]byte, val string) {
quoteString(buf, val)
quoteString(buf, val)
}
// unquote unescapes a internal JSON string (it doesn't count quotas at the begining and end)
func unquote(src string) (string, types.ParsingError) {
sp := rt.IndexChar(src, -1)
out, ok := unquoteBytes(rt.BytesFrom(sp, len(src)+2, len(src)+2))
if !ok {
return "", types.ERR_INVALID_ESCAPE
}
return rt.Mem2Str(out), 0
sp := rt.IndexChar(src, -1)
out, ok := unquoteBytes(rt.BytesFrom(sp, len(src)+2, len(src)+2))
if !ok {
return "", types.ERR_INVALID_ESCAPE
}
return rt.Mem2Str(out), 0
}
func (self *Parser) decodeValue() (val types.JsonState) {
e, v := decodeValue(self.s, self.p, self.dbuf == nil)
if e < 0 {
return v
}
self.p = e
return v
e, v := decodeValue(self.s, self.p, self.dbuf == nil)
if e < 0 {
return v
}
self.p = e
return v
}
func (self *Parser) skip() (int, types.ParsingError) {
e, s := skipValue(self.s, self.p)
if e < 0 {
return self.p, types.ParsingError(-e)
}
self.p = e
return s, 0
e, s := skipValue(self.s, self.p)
if e < 0 {
return self.p, types.ParsingError(-e)
}
self.p = e
return s, 0
}
func (self *Parser) skipFast() (int, types.ParsingError) {
e, s := skipValueFast(self.s, self.p)
if e < 0 {
return self.p, types.ParsingError(-e)
}
self.p = e
return s, 0
e, s := skipValueFast(self.s, self.p)
if e < 0 {
return self.p, types.ParsingError(-e)
}
self.p = e
return s, 0
}
func (self *Node) encodeInterface(buf *[]byte) error {
out, err := json.Marshal(self.packAny())
if err != nil {
return err
}
*buf = append(*buf, out...)
return nil
out, err := json.Marshal(self.packAny())
if err != nil {
return err
}
*buf = append(*buf, out...)
return nil
}
func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
func (self *Parser) getByPath(validate bool, path ...interface{}) (int, types.ParsingError) {
for _, p := range path {
if idx, ok := p.(int); ok && idx >= 0 {
if err := self.searchIndex(idx); err != 0 {
@ -93,13 +95,20 @@ func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
panic("path must be either int(>=0) or string")
}
}
start, e := self.skip()
var start int
var e types.ParsingError
if validate {
start, e = self.skip()
} else {
start, e = self.skipFast()
}
if e != 0 {
return self.p, e
}
// t := switchRawType(self.s[start])
// if t == _V_NUMBER {
// self.p = 1 + backward(self.s, self.p-1)
// }
return start, 0
}
func validate_utf8(str string) bool {
return utf8.ValidString(str)
}

View File

@ -19,7 +19,7 @@
package ast
import (
`github.com/chenzhuoyu/base64x`
`github.com/cloudwego/base64x`
)
func decodeBase64(src string) ([]byte, error) {

View File

@ -583,3 +583,36 @@ func skipArray(src string, pos int) (ret int, start int) {
pos++
}
}
// DecodeString decodes a JSON string from pos and return golang string.
// - needEsc indicates if to unescaped escaping chars
// - hasEsc tells if the returned string has escaping chars
// - validStr enables validating UTF8 charset
//
func _DecodeString(src string, pos int, needEsc bool, validStr bool) (v string, ret int, hasEsc bool) {
p := NewParserObj(src)
p.p = pos
switch val := p.decodeValue(); val.Vt {
case types.V_STRING:
str := p.s[val.Iv : p.p-1]
if validStr && !validate_utf8(str) {
return "", -int(types.ERR_INVALID_UTF8), false
}
/* fast path: no escape sequence */
if val.Ep == -1 {
return str, p.p, false
} else if !needEsc {
return str, p.p, true
}
/* unquote the string */
out, err := unquote(str)
/* check for errors */
if err != 0 {
return "", -int(err), true
} else {
return out, p.p, true
}
default:
return "", -int(_ERR_UNSUPPORT_TYPE), false
}
}

View File

@ -852,29 +852,29 @@ func (self *Node) IndexPair(idx int) *Pair {
}
func (self *Node) indexOrGet(idx int, key string) (*Node, int) {
if err := self.should(types.V_OBJECT, "an object"); err != nil {
return unwrapError(err), idx
}
if err := self.should(types.V_OBJECT, "an object"); err != nil {
return unwrapError(err), idx
}
pr := self.skipIndexPair(idx)
if pr != nil && pr.Key == key {
return &pr.Value, idx
}
pr := self.skipIndexPair(idx)
if pr != nil && pr.Key == key {
return &pr.Value, idx
}
return self.skipKey(key)
return self.skipKey(key)
}
// IndexOrGet firstly use idx to index a value and check if its key matches
// If not, then use the key to search value
func (self *Node) IndexOrGet(idx int, key string) *Node {
node, _ := self.indexOrGet(idx, key)
return node
node, _ := self.indexOrGet(idx, key)
return node
}
// IndexOrGetWithIdx attempts to retrieve a node by index and key, returning the node and its correct index.
// If the key does not match at the given index, it searches by key and returns the node with its updated index.
func (self *Node) IndexOrGetWithIdx(idx int, key string) (*Node, int) {
return self.indexOrGet(idx, key)
return self.indexOrGet(idx, key)
}
/** Generic Value Converters **/

View File

@ -653,3 +653,8 @@ func (self *Parser) ExportError(err types.ParsingError) error {
Code: err,
}.Description())
}
func backward(src string, i int) int {
for ; i>=0 && isSpace(src[i]); i-- {}
return i
}

View File

@ -36,7 +36,7 @@ func NewSearcher(str string) *Searcher {
// GetByPathCopy search in depth from top json and returns a **Copied** json node at the path location
func (self *Searcher) GetByPathCopy(path ...interface{}) (Node, error) {
return self.getByPath(true, path...)
return self.getByPath(true, true, path...)
}
// GetByPathNoCopy search in depth from top json and returns a **Referenced** json node at the path location
@ -44,15 +44,15 @@ func (self *Searcher) GetByPathCopy(path ...interface{}) (Node, error) {
// WARN: this search directly refer partial json from top json, which has faster speed,
// may consumes more memory.
func (self *Searcher) GetByPath(path ...interface{}) (Node, error) {
return self.getByPath(false, path...)
return self.getByPath(false, true, path...)
}
func (self *Searcher) getByPath(copystring bool, path ...interface{}) (Node, error) {
func (self *Searcher) getByPath(copystring bool, validate bool, path ...interface{}) (Node, error) {
var err types.ParsingError
var start int
self.parser.p = 0
start, err = self.parser.getByPath(path...)
start, err = self.parser.getByPath(validate, path...)
if err != 0 {
// for compatibility with old version
if err == types.ERR_NOT_FOUND {
@ -78,3 +78,61 @@ func (self *Searcher) getByPath(copystring bool, path ...interface{}) (Node, err
}
return newRawNode(raw, t), nil
}
// GetByPath searches a path and returns relaction and types of target
func _GetByPath(src string, path ...interface{}) (start int, end int, typ int, err error) {
p := NewParserObj(src)
s, e := p.getByPath(false, path...)
if e != 0 {
// for compatibility with old version
if e == types.ERR_NOT_FOUND {
return -1, -1, 0, ErrNotExist
}
if e == types.ERR_UNSUPPORT_TYPE {
panic("path must be either int(>=0) or string")
}
return -1, -1, 0, p.syntaxError(e)
}
t := switchRawType(p.s[s])
if t == _V_NONE {
return -1, -1, 0, ErrNotExist
}
if t == _V_NUMBER {
p.p = 1 + backward(p.s, p.p-1)
}
return s, p.p, int(t), nil
}
// ValidSyntax check if a json has a valid JSON syntax,
// while not validate UTF-8 charset
func _ValidSyntax(json string) bool {
p := NewParserObj(json)
_, e := p.skip()
if e != 0 {
return false
}
if skipBlank(p.s, p.p) != -int(types.ERR_EOF) {
return false
}
return true
}
// SkipFast skip a json value in fast-skip algs,
// while not strictly validate JSON syntax and UTF-8 charset.
func _SkipFast(src string, i int) (int, int, error) {
p := NewParserObj(src)
p.p = i
s, e := p.skipFast()
if e != 0 {
return -1, -1, p.ExportError(e)
}
t := switchRawType(p.s[s])
if t == _V_NONE {
return -1, -1, ErrNotExist
}
if t == _V_NUMBER {
p.p = 1 + backward(p.s, p.p-1)
}
return s, p.p, nil
}

View File

@ -22,6 +22,8 @@ import (
`github.com/bytedance/sonic/internal/encoder`
)
// EnableFallback indicates if encoder use fallback
const EnableFallback = false
// Encoder represents a specific set of encoder configurations.
type Encoder = encoder.Encoder

View File

@ -28,9 +28,12 @@ import (
)
func init() {
println("WARNING: sonic only supports Go1.16~1.22 && CPU amd64, but your environment is not suitable")
println("WARNING:(encoder) sonic only supports Go1.16~1.22 && CPU amd64, but your environment is not suitable")
}
// EnableFallback indicates if encoder use fallback
const EnableFallback = true
// Options is a set of encoding options.
type Options uint64
@ -188,15 +191,19 @@ func Encode(val interface{}, opts Options) ([]byte, error) {
// EncodeInto is like Encode but uses a user-supplied buffer instead of allocating
// a new one.
func EncodeInto(buf *[]byte, val interface{}, opts Options) error {
if buf == nil {
panic("user-supplied buffer buf is nil")
}
w := bytes.NewBuffer(*buf)
enc := json.NewEncoder(w)
enc.SetEscapeHTML((opts & EscapeHTML) != 0)
err := enc.Encode(val)
*buf = w.Bytes()
return err
if buf == nil {
panic("user-supplied buffer buf is nil")
}
w := bytes.NewBuffer(*buf)
enc := json.NewEncoder(w)
enc.SetEscapeHTML((opts & EscapeHTML) != 0)
err := enc.Encode(val)
*buf = w.Bytes()
l := len(*buf)
if l > 0 && (opts & NoEncoderNewline != 0) && (*buf)[l-1] == '\n' {
*buf = (*buf)[:l-1]
}
return err
}
// HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029

View File

@ -2,7 +2,8 @@ go 1.18
use (
.
./generic_test
./fuzz
./external_jsonlib_test
./fuzz
./generic_test
./loader
)

View File

@ -134,6 +134,7 @@ var (
_R9 = jit.Reg("R9")
_X0 = jit.Reg("X0")
_X1 = jit.Reg("X1")
_X15 = jit.Reg("X15")
)
var (
@ -421,6 +422,7 @@ func (self *_Assembler) call_go(fn obj.Addr) {
func (self *_Assembler) callc(fn obj.Addr) {
self.save(_IP)
self.call(fn)
self.Emit("XORPS", _X15, _X15)
self.load(_IP)
}
@ -605,7 +607,6 @@ func (self *_Assembler) skip_one() {
self.Emit("TESTQ", _AX, _AX) // TESTQ AX, AX
self.Sjmp("JS" , _LB_parsing_error_v) // JS _parse_error_v
self.Emit("MOVQ" , _VAR_pc, _R9) // MOVQ pc, R9
// self.Byte(0xcc)
self.Rjmp("JMP" , _R9) // JMP (R9)
}

View File

@ -30,9 +30,7 @@ func decodeTypedPointer(s string, i int, vt *rt.GoType, vp unsafe.Pointer, sb *_
return 0, err
} else {
rt.MoreStack(_FP_size + _VD_size + native.MaxFrameSize)
rt.StopProf()
ret, err := fn(s, i, vp, sb, fv, "", nil)
rt.StartProf()
return ret, err
}
}

View File

@ -22,12 +22,12 @@ import (
`unsafe`
`reflect`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64decode github.com/chenzhuoyu/base64x._subr__b64decode
//go:linkname _subr__b64decode github.com/cloudwego/base64x._subr__b64decode
var _subr__b64decode uintptr
// runtime.maxElementSize

View File

@ -22,12 +22,12 @@ import (
`unsafe`
`reflect`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64decode github.com/chenzhuoyu/base64x._subr__b64decode
//go:linkname _subr__b64decode github.com/cloudwego/base64x._subr__b64decode
var _subr__b64decode uintptr
// runtime.maxElementSize

View File

@ -128,6 +128,7 @@ var (
var (
_X0 = jit.Reg("X0")
_X15 = jit.Reg("X15")
_Y0 = jit.Reg("Y0")
)
@ -512,6 +513,7 @@ func (self *_Assembler) call_c(pc obj.Addr) {
self.call(pc) // CALL $pc
self.xload(_REG_ffi...) // LOAD $REG_ffi
self.Emit("XCHGQ", _SP_p, _BX)
self.Emit("XORPS", _X15, _X15)
}
func (self *_Assembler) call_go(pc obj.Addr) {

View File

@ -337,7 +337,7 @@ func Valid(data []byte) (ok bool, start int) {
s := rt.Mem2Str(data)
p := 0
m := types.NewStateMachine()
ret := native.ValidateOne(&s, &p, m)
ret := native.ValidateOne(&s, &p, m, types.F_VALIDATE_STRING)
types.FreeStateMachine(m)
if ret < 0 {

View File

@ -23,6 +23,7 @@ import (
`github.com/bytedance/sonic/internal/jit`
`github.com/bytedance/sonic/internal/native`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
@ -73,15 +74,11 @@ func encodeTypedPointer(buf *[]byte, vt *rt.GoType, vp *unsafe.Pointer, sb *_Sta
return err
} else if vt.Indirect() {
rt.MoreStack(_FP_size + native.MaxFrameSize)
rt.StopProf()
err := fn(buf, *vp, sb, fv)
rt.StartProf()
return err
} else {
rt.MoreStack(_FP_size + native.MaxFrameSize)
rt.StopProf()
err := fn(buf, unsafe.Pointer(vp), sb, fv)
rt.StartProf()
return err
}
}
@ -123,8 +120,8 @@ func htmlEscape(dst []byte, src []byte) []byte {
dbuf := (*rt.GoSlice)(unsafe.Pointer(&dst))
/* grow dst if it is shorter */
if cap(dst) - len(dst) < len(src) + native.BufPaddingSize {
cap := len(src) * 3 / 2 + native.BufPaddingSize
if cap(dst) - len(dst) < len(src) + types.BufPaddingSize {
cap := len(src) * 3 / 2 + types.BufPaddingSize
*dbuf = growslice(typeByte, *dbuf, cap)
}

View File

@ -21,12 +21,12 @@ package encoder
import (
`unsafe`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
var _subr__b64encode uintptr
//go:noescape

View File

@ -21,12 +21,12 @@ package encoder
import (
`unsafe`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
var _subr__b64encode uintptr
//go:noescape

View File

@ -21,12 +21,12 @@ package encoder
import (
`unsafe`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
var _subr__b64encode uintptr
//go:noescape

View File

@ -21,12 +21,12 @@ package encoder
import (
`unsafe`
_ `github.com/chenzhuoyu/base64x`
_ `github.com/cloudwego/base64x`
`github.com/bytedance/sonic/internal/rt`
)
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
var _subr__b64encode uintptr
//go:noescape

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_f32toa func(out *byte, val float32) (ret int)
var S_f32toa uintptr
//go:nosplit
func f32toa(out *byte, val float32) (ret int) {
return F_f32toa((*byte)(rt.NoEscape(unsafe.Pointer(out))), val)
}

View File

@ -0,0 +1,44 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__f32toa = 32
)
const (
_stack__f32toa = 48
)
const (
_size__f32toa = 3392
)
var (
_pcsp__f32toa = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{3350, 48},
{3351, 40},
{3353, 32},
{3355, 24},
{3357, 16},
{3359, 8},
{3363, 0},
{3385, 48},
}
)
var _cfunc_f32toa = []loader.CFunc{
{"_f32toa_entry", 0, _entry__f32toa, 0, nil},
{"_f32toa", _entry__f32toa, _size__f32toa, _stack__f32toa, _pcsp__f32toa},
}

View File

@ -0,0 +1,964 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_f32toa = []byte{
// .p2align 5, 0x00
// LCPI0_0
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, // QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000010 QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
//0x00000020 .p2align 4, 0x90
//0x00000020 _f32toa
0x55, //0x00000020 pushq %rbp
0x48, 0x89, 0xe5, //0x00000021 movq %rsp, %rbp
0x41, 0x57, //0x00000024 pushq %r15
0x41, 0x56, //0x00000026 pushq %r14
0x41, 0x55, //0x00000028 pushq %r13
0x41, 0x54, //0x0000002a pushq %r12
0x53, //0x0000002c pushq %rbx
0xc5, 0xf9, 0x7e, 0xc0, //0x0000002d vmovd %xmm0, %eax
0x89, 0xc1, //0x00000031 movl %eax, %ecx
0xc1, 0xe9, 0x17, //0x00000033 shrl $23, %ecx
0x0f, 0xb6, 0xd9, //0x00000036 movzbl %cl, %ebx
0x81, 0xfb, 0xff, 0x00, 0x00, 0x00, //0x00000039 cmpl $255, %ebx
0x0f, 0x84, 0xff, 0x0c, 0x00, 0x00, //0x0000003f je LBB0_139
0xc6, 0x07, 0x2d, //0x00000045 movb $45, (%rdi)
0x41, 0x89, 0xc1, //0x00000048 movl %eax, %r9d
0x41, 0xc1, 0xe9, 0x1f, //0x0000004b shrl $31, %r9d
0x4e, 0x8d, 0x04, 0x0f, //0x0000004f leaq (%rdi,%r9), %r8
0xa9, 0xff, 0xff, 0xff, 0x7f, //0x00000053 testl $2147483647, %eax
0x0f, 0x84, 0xc6, 0x01, 0x00, 0x00, //0x00000058 je LBB0_14
0x25, 0xff, 0xff, 0x7f, 0x00, //0x0000005e andl $8388607, %eax
0x85, 0xdb, //0x00000063 testl %ebx, %ebx
0x0f, 0x84, 0xe1, 0x0c, 0x00, 0x00, //0x00000065 je LBB0_140
0x8d, 0xb0, 0x00, 0x00, 0x80, 0x00, //0x0000006b leal $8388608(%rax), %esi
0x44, 0x8d, 0xbb, 0x6a, 0xff, 0xff, 0xff, //0x00000071 leal $-150(%rbx), %r15d
0x8d, 0x4b, 0x81, //0x00000078 leal $-127(%rbx), %ecx
0x83, 0xf9, 0x17, //0x0000007b cmpl $23, %ecx
0x0f, 0x87, 0x1b, 0x00, 0x00, 0x00, //0x0000007e ja LBB0_5
0xb9, 0x96, 0x00, 0x00, 0x00, //0x00000084 movl $150, %ecx
0x29, 0xd9, //0x00000089 subl %ebx, %ecx
0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000008b movq $-1, %rdx
0x48, 0xd3, 0xe2, //0x00000092 shlq %cl, %rdx
0xf7, 0xd2, //0x00000095 notl %edx
0x85, 0xf2, //0x00000097 testl %esi, %edx
0x0f, 0x84, 0x12, 0x04, 0x00, 0x00, //0x00000099 je LBB0_32
//0x0000009f LBB0_5
0x41, 0x89, 0xf6, //0x0000009f movl %esi, %r14d
0x41, 0x83, 0xe6, 0x01, //0x000000a2 andl $1, %r14d
0x85, 0xc0, //0x000000a6 testl %eax, %eax
0x0f, 0x94, 0xc0, //0x000000a8 sete %al
0x83, 0xfb, 0x01, //0x000000ab cmpl $1, %ebx
0x0f, 0x97, 0xc1, //0x000000ae seta %cl
0x20, 0xc1, //0x000000b1 andb %al, %cl
0x0f, 0xb6, 0xc9, //0x000000b3 movzbl %cl, %ecx
0x41, 0x89, 0xf2, //0x000000b6 movl %esi, %r10d
0x41, 0xc1, 0xe2, 0x02, //0x000000b9 shll $2, %r10d
0x8d, 0x44, 0xb1, 0xfe, //0x000000bd leal $-2(%rcx,%rsi,4), %eax
0x45, 0x69, 0xdf, 0x13, 0x44, 0x13, 0x00, //0x000000c1 imull $1262611, %r15d, %r11d
0x31, 0xd2, //0x000000c8 xorl %edx, %edx
0x84, 0xc9, //0x000000ca testb %cl, %cl
0xb9, 0xff, 0xfe, 0x07, 0x00, //0x000000cc movl $524031, %ecx
0x0f, 0x44, 0xca, //0x000000d1 cmovel %edx, %ecx
0x41, 0x29, 0xcb, //0x000000d4 subl %ecx, %r11d
0x41, 0xc1, 0xfb, 0x16, //0x000000d7 sarl $22, %r11d
0x41, 0x69, 0xcb, 0xb1, 0x6c, 0xe5, 0xff, //0x000000db imull $-1741647, %r11d, %ecx
0xc1, 0xe9, 0x13, //0x000000e2 shrl $19, %ecx
0x44, 0x01, 0xf9, //0x000000e5 addl %r15d, %ecx
0xba, 0x1f, 0x00, 0x00, 0x00, //0x000000e8 movl $31, %edx
0x44, 0x29, 0xda, //0x000000ed subl %r11d, %edx
0x48, 0x63, 0xd2, //0x000000f0 movslq %edx, %rdx
0x48, 0x8d, 0x1d, 0x36, 0x0d, 0x00, 0x00, //0x000000f3 leaq $3382(%rip), %rbx /* _pow10_ceil_sig_f32.g+0(%rip) */
0xfe, 0xc1, //0x000000fa incb %cl
0xd3, 0xe0, //0x000000fc shll %cl, %eax
0x4c, 0x8b, 0x24, 0xd3, //0x000000fe movq (%rbx,%rdx,8), %r12
0x49, 0xf7, 0xe4, //0x00000102 mulq %r12
0x48, 0xc1, 0xe8, 0x20, //0x00000105 shrq $32, %rax
0x31, 0xdb, //0x00000109 xorl %ebx, %ebx
0x83, 0xf8, 0x01, //0x0000010b cmpl $1, %eax
0x0f, 0x97, 0xc3, //0x0000010e seta %bl
0x41, 0xd3, 0xe2, //0x00000111 shll %cl, %r10d
0x09, 0xd3, //0x00000114 orl %edx, %ebx
0x4c, 0x89, 0xd0, //0x00000116 movq %r10, %rax
0x49, 0xf7, 0xe4, //0x00000119 mulq %r12
0x49, 0x89, 0xd2, //0x0000011c movq %rdx, %r10
0x48, 0xc1, 0xe8, 0x20, //0x0000011f shrq $32, %rax
0x45, 0x31, 0xff, //0x00000123 xorl %r15d, %r15d
0x83, 0xf8, 0x01, //0x00000126 cmpl $1, %eax
0x41, 0x0f, 0x97, 0xc7, //0x00000129 seta %r15b
0x8d, 0x04, 0xb5, 0x02, 0x00, 0x00, 0x00, //0x0000012d leal $2(,%rsi,4), %eax
0xd3, 0xe0, //0x00000134 shll %cl, %eax
0x45, 0x09, 0xd7, //0x00000136 orl %r10d, %r15d
0x49, 0xf7, 0xe4, //0x00000139 mulq %r12
0x48, 0xc1, 0xe8, 0x20, //0x0000013c shrq $32, %rax
0x31, 0xc9, //0x00000140 xorl %ecx, %ecx
0x83, 0xf8, 0x01, //0x00000142 cmpl $1, %eax
0x0f, 0x97, 0xc1, //0x00000145 seta %cl
0x09, 0xd1, //0x00000148 orl %edx, %ecx
0x44, 0x01, 0xf3, //0x0000014a addl %r14d, %ebx
0x44, 0x29, 0xf1, //0x0000014d subl %r14d, %ecx
0x41, 0x83, 0xff, 0x28, //0x00000150 cmpl $40, %r15d
0x0f, 0x82, 0x9a, 0x00, 0x00, 0x00, //0x00000154 jb LBB0_12
0x44, 0x89, 0xd2, //0x0000015a movl %r10d, %edx
0xb8, 0xcd, 0xcc, 0xcc, 0xcc, //0x0000015d movl $3435973837, %eax
0x48, 0x0f, 0xaf, 0xc2, //0x00000162 imulq %rdx, %rax
0x48, 0xc1, 0xe8, 0x25, //0x00000166 shrq $37, %rax
0x41, 0x89, 0xde, //0x0000016a movl %ebx, %r14d
0x48, 0x8d, 0x34, 0xc5, 0x00, 0x00, 0x00, 0x00, //0x0000016d leaq (,%rax,8), %rsi
0x48, 0x8d, 0x14, 0xb6, //0x00000175 leaq (%rsi,%rsi,4), %rdx
0x4c, 0x39, 0xf2, //0x00000179 cmpq %r14, %rdx
0x41, 0x0f, 0x93, 0xc4, //0x0000017c setae %r12b
0x4c, 0x8d, 0x74, 0xb6, 0x28, //0x00000180 leaq $40(%rsi,%rsi,4), %r14
0x89, 0xce, //0x00000185 movl %ecx, %esi
0x49, 0x39, 0xf6, //0x00000187 cmpq %rsi, %r14
0x0f, 0x96, 0xc2, //0x0000018a setbe %dl
0x41, 0x38, 0xd4, //0x0000018d cmpb %dl, %r12b
0x0f, 0x84, 0x5e, 0x00, 0x00, 0x00, //0x00000190 je LBB0_12
0x45, 0x31, 0xed, //0x00000196 xorl %r13d, %r13d
0x49, 0x39, 0xf6, //0x00000199 cmpq %rsi, %r14
0x41, 0x0f, 0x96, 0xc5, //0x0000019c setbe %r13b
0x41, 0x01, 0xc5, //0x000001a0 addl %eax, %r13d
0x41, 0xff, 0xc3, //0x000001a3 incl %r11d
0x41, 0x81, 0xfd, 0xa0, 0x86, 0x01, 0x00, //0x000001a6 cmpl $100000, %r13d
0x0f, 0x83, 0xb0, 0x00, 0x00, 0x00, //0x000001ad jae LBB0_18
//0x000001b3 LBB0_8
0xb8, 0x01, 0x00, 0x00, 0x00, //0x000001b3 movl $1, %eax
0x41, 0x83, 0xfd, 0x0a, //0x000001b8 cmpl $10, %r13d
0x0f, 0x82, 0xd4, 0x00, 0x00, 0x00, //0x000001bc jb LBB0_22
0xb8, 0x02, 0x00, 0x00, 0x00, //0x000001c2 movl $2, %eax
0x41, 0x83, 0xfd, 0x64, //0x000001c7 cmpl $100, %r13d
0x0f, 0x82, 0xc5, 0x00, 0x00, 0x00, //0x000001cb jb LBB0_22
0xb8, 0x03, 0x00, 0x00, 0x00, //0x000001d1 movl $3, %eax
0x41, 0x81, 0xfd, 0xe8, 0x03, 0x00, 0x00, //0x000001d6 cmpl $1000, %r13d
0x0f, 0x82, 0xb3, 0x00, 0x00, 0x00, //0x000001dd jb LBB0_22
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000001e3 cmpl $10000, %r13d
0xb8, 0x05, 0x00, 0x00, 0x00, //0x000001ea movl $5, %eax
0xe9, 0x9f, 0x00, 0x00, 0x00, //0x000001ef jmp LBB0_21
//0x000001f4 LBB0_12
0x4d, 0x89, 0xd6, //0x000001f4 movq %r10, %r14
0x49, 0xc1, 0xee, 0x02, //0x000001f7 shrq $2, %r14
0x44, 0x89, 0xd6, //0x000001fb movl %r10d, %esi
0x83, 0xe6, 0xfc, //0x000001fe andl $-4, %esi
0x39, 0xf3, //0x00000201 cmpl %esi, %ebx
0x0f, 0x96, 0xc2, //0x00000203 setbe %dl
0x8d, 0x5e, 0x04, //0x00000206 leal $4(%rsi), %ebx
0x39, 0xcb, //0x00000209 cmpl %ecx, %ebx
0x0f, 0x96, 0xc0, //0x0000020b setbe %al
0x38, 0xc2, //0x0000020e cmpb %al, %dl
0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x00000210 je LBB0_15
0x45, 0x31, 0xed, //0x00000216 xorl %r13d, %r13d
0x39, 0xcb, //0x00000219 cmpl %ecx, %ebx
0x41, 0x0f, 0x96, 0xc5, //0x0000021b setbe %r13b
0xe9, 0x2f, 0x00, 0x00, 0x00, //0x0000021f jmp LBB0_17
//0x00000224 LBB0_14
0x41, 0xc6, 0x00, 0x30, //0x00000224 movb $48, (%r8)
0x41, 0x29, 0xf8, //0x00000228 subl %edi, %r8d
0x41, 0xff, 0xc0, //0x0000022b incl %r8d
0xe9, 0x00, 0x0b, 0x00, 0x00, //0x0000022e jmp LBB0_138
//0x00000233 LBB0_15
0x83, 0xce, 0x02, //0x00000233 orl $2, %esi
0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000236 movl $1, %r13d
0x41, 0x39, 0xf7, //0x0000023c cmpl %esi, %r15d
0x0f, 0x87, 0x0e, 0x00, 0x00, 0x00, //0x0000023f ja LBB0_17
0x0f, 0x94, 0xc0, //0x00000245 sete %al
0x41, 0xc0, 0xea, 0x02, //0x00000248 shrb $2, %r10b
0x41, 0x20, 0xc2, //0x0000024c andb %al, %r10b
0x45, 0x0f, 0xb6, 0xea, //0x0000024f movzbl %r10b, %r13d
//0x00000253 LBB0_17
0x45, 0x01, 0xf5, //0x00000253 addl %r14d, %r13d
0x41, 0x81, 0xfd, 0xa0, 0x86, 0x01, 0x00, //0x00000256 cmpl $100000, %r13d
0x0f, 0x82, 0x50, 0xff, 0xff, 0xff, //0x0000025d jb LBB0_8
//0x00000263 LBB0_18
0xb8, 0x06, 0x00, 0x00, 0x00, //0x00000263 movl $6, %eax
0x41, 0x81, 0xfd, 0x40, 0x42, 0x0f, 0x00, //0x00000268 cmpl $1000000, %r13d
0x0f, 0x82, 0x21, 0x00, 0x00, 0x00, //0x0000026f jb LBB0_22
0xb8, 0x07, 0x00, 0x00, 0x00, //0x00000275 movl $7, %eax
0x41, 0x81, 0xfd, 0x80, 0x96, 0x98, 0x00, //0x0000027a cmpl $10000000, %r13d
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x00000281 jb LBB0_22
0x41, 0x81, 0xfd, 0x00, 0xe1, 0xf5, 0x05, //0x00000287 cmpl $100000000, %r13d
0xb8, 0x09, 0x00, 0x00, 0x00, //0x0000028e movl $9, %eax
//0x00000293 LBB0_21
0x83, 0xd8, 0x00, //0x00000293 sbbl $0, %eax
//0x00000296 LBB0_22
0x46, 0x8d, 0x3c, 0x18, //0x00000296 leal (%rax,%r11), %r15d
0x42, 0x8d, 0x4c, 0x18, 0x05, //0x0000029a leal $5(%rax,%r11), %ecx
0x83, 0xf9, 0x1b, //0x0000029f cmpl $27, %ecx
0x0f, 0x82, 0x77, 0x00, 0x00, 0x00, //0x000002a2 jb LBB0_26
0x89, 0xc0, //0x000002a8 movl %eax, %eax
0x49, 0x8d, 0x5c, 0x00, 0x01, //0x000002aa leaq $1(%r8,%rax), %rbx
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000002af cmpl $10000, %r13d
0x0f, 0x82, 0xd9, 0x00, 0x00, 0x00, //0x000002b6 jb LBB0_30
0x44, 0x89, 0xe8, //0x000002bc movl %r13d, %eax
0x41, 0xbb, 0x59, 0x17, 0xb7, 0xd1, //0x000002bf movl $3518437209, %r11d
0x4c, 0x0f, 0xaf, 0xd8, //0x000002c5 imulq %rax, %r11
0x49, 0xc1, 0xeb, 0x2d, //0x000002c9 shrq $45, %r11
0x41, 0x69, 0xc3, 0xf0, 0xd8, 0xff, 0xff, //0x000002cd imull $-10000, %r11d, %eax
0x44, 0x01, 0xe8, //0x000002d4 addl %r13d, %eax
0x0f, 0x84, 0xb3, 0x04, 0x00, 0x00, //0x000002d7 je LBB0_62
0x89, 0xc1, //0x000002dd movl %eax, %ecx
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x000002df imulq $1374389535, %rcx, %rcx
0x48, 0xc1, 0xe9, 0x25, //0x000002e6 shrq $37, %rcx
0x6b, 0xd1, 0x64, //0x000002ea imull $100, %ecx, %edx
0x29, 0xd0, //0x000002ed subl %edx, %eax
0x48, 0x8d, 0x15, 0x6a, 0x0a, 0x00, 0x00, //0x000002ef leaq $2666(%rip), %rdx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x04, 0x42, //0x000002f6 movzwl (%rdx,%rax,2), %eax
0x66, 0x89, 0x43, 0xfe, //0x000002fa movw %ax, $-2(%rbx)
0x0f, 0xb7, 0x04, 0x4a, //0x000002fe movzwl (%rdx,%rcx,2), %eax
0x66, 0x89, 0x43, 0xfc, //0x00000302 movw %ax, $-4(%rbx)
0x45, 0x31, 0xc9, //0x00000306 xorl %r9d, %r9d
0x48, 0x8d, 0x4b, 0xfc, //0x00000309 leaq $-4(%rbx), %rcx
0x41, 0x83, 0xfb, 0x64, //0x0000030d cmpl $100, %r11d
0x0f, 0x83, 0x91, 0x00, 0x00, 0x00, //0x00000311 jae LBB0_64
//0x00000317 LBB0_31
0x44, 0x89, 0xda, //0x00000317 movl %r11d, %edx
0xe9, 0xd4, 0x00, 0x00, 0x00, //0x0000031a jmp LBB0_66
//0x0000031f LBB0_26
0x41, 0x89, 0xc4, //0x0000031f movl %eax, %r12d
0x45, 0x85, 0xdb, //0x00000322 testl %r11d, %r11d
0x0f, 0x88, 0x1d, 0x02, 0x00, 0x00, //0x00000325 js LBB0_38
0x4b, 0x8d, 0x34, 0x20, //0x0000032b leaq (%r8,%r12), %rsi
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x0000032f cmpl $10000, %r13d
0x0f, 0x82, 0xa7, 0x02, 0x00, 0x00, //0x00000336 jb LBB0_43
0x44, 0x89, 0xe8, //0x0000033c movl %r13d, %eax
0xb9, 0x59, 0x17, 0xb7, 0xd1, //0x0000033f movl $3518437209, %ecx
0x48, 0x0f, 0xaf, 0xc8, //0x00000344 imulq %rax, %rcx
0x48, 0xc1, 0xe9, 0x2d, //0x00000348 shrq $45, %rcx
0x69, 0xc1, 0xf0, 0xd8, 0xff, 0xff, //0x0000034c imull $-10000, %ecx, %eax
0x44, 0x01, 0xe8, //0x00000352 addl %r13d, %eax
0x48, 0x69, 0xd0, 0x1f, 0x85, 0xeb, 0x51, //0x00000355 imulq $1374389535, %rax, %rdx
0x48, 0xc1, 0xea, 0x25, //0x0000035c shrq $37, %rdx
0x6b, 0xda, 0x64, //0x00000360 imull $100, %edx, %ebx
0x29, 0xd8, //0x00000363 subl %ebx, %eax
0x48, 0x8d, 0x1d, 0xf4, 0x09, 0x00, 0x00, //0x00000365 leaq $2548(%rip), %rbx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x04, 0x43, //0x0000036c movzwl (%rbx,%rax,2), %eax
0x66, 0x89, 0x46, 0xfe, //0x00000370 movw %ax, $-2(%rsi)
0x48, 0x8d, 0x46, 0xfc, //0x00000374 leaq $-4(%rsi), %rax
0x0f, 0xb7, 0x14, 0x53, //0x00000378 movzwl (%rbx,%rdx,2), %edx
0x66, 0x89, 0x56, 0xfc, //0x0000037c movw %dx, $-4(%rsi)
0x41, 0x89, 0xcd, //0x00000380 movl %ecx, %r13d
0x41, 0x83, 0xfd, 0x64, //0x00000383 cmpl $100, %r13d
0x0f, 0x83, 0x63, 0x02, 0x00, 0x00, //0x00000387 jae LBB0_44
//0x0000038d LBB0_29
0x44, 0x89, 0xe9, //0x0000038d movl %r13d, %ecx
0xe9, 0x9e, 0x02, 0x00, 0x00, //0x00000390 jmp LBB0_46
//0x00000395 LBB0_30
0x45, 0x31, 0xc9, //0x00000395 xorl %r9d, %r9d
0x48, 0x89, 0xd9, //0x00000398 movq %rbx, %rcx
0x45, 0x89, 0xeb, //0x0000039b movl %r13d, %r11d
0x41, 0x83, 0xfb, 0x64, //0x0000039e cmpl $100, %r11d
0x0f, 0x82, 0x6f, 0xff, 0xff, 0xff, //0x000003a2 jb LBB0_31
//0x000003a8 LBB0_64
0x48, 0xff, 0xc9, //0x000003a8 decq %rcx
0x4c, 0x8d, 0x15, 0xae, 0x09, 0x00, 0x00, //0x000003ab leaq $2478(%rip), %r10 /* _Digits+0(%rip) */
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003b2 .p2align 4, 0x90
//0x000003c0 LBB0_65
0x44, 0x89, 0xda, //0x000003c0 movl %r11d, %edx
0x48, 0x69, 0xd2, 0x1f, 0x85, 0xeb, 0x51, //0x000003c3 imulq $1374389535, %rdx, %rdx
0x48, 0xc1, 0xea, 0x25, //0x000003ca shrq $37, %rdx
0x6b, 0xc2, 0x64, //0x000003ce imull $100, %edx, %eax
0x44, 0x89, 0xde, //0x000003d1 movl %r11d, %esi
0x29, 0xc6, //0x000003d4 subl %eax, %esi
0x41, 0x0f, 0xb7, 0x04, 0x72, //0x000003d6 movzwl (%r10,%rsi,2), %eax
0x66, 0x89, 0x41, 0xff, //0x000003db movw %ax, $-1(%rcx)
0x48, 0x83, 0xc1, 0xfe, //0x000003df addq $-2, %rcx
0x41, 0x81, 0xfb, 0x0f, 0x27, 0x00, 0x00, //0x000003e3 cmpl $9999, %r11d
0x41, 0x89, 0xd3, //0x000003ea movl %edx, %r11d
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x000003ed ja LBB0_65
//0x000003f3 LBB0_66
0x49, 0x8d, 0x70, 0x01, //0x000003f3 leaq $1(%r8), %rsi
0x83, 0xfa, 0x0a, //0x000003f7 cmpl $10, %edx
0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x000003fa jb LBB0_68
0x89, 0xd0, //0x00000400 movl %edx, %eax
0x48, 0x8d, 0x0d, 0x57, 0x09, 0x00, 0x00, //0x00000402 leaq $2391(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x00000409 movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x0000040c movb $1(%rcx,%rax,2), %al
0x41, 0x88, 0x50, 0x01, //0x00000410 movb %dl, $1(%r8)
0x41, 0x88, 0x40, 0x02, //0x00000414 movb %al, $2(%r8)
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000418 jmp LBB0_69
//0x0000041d LBB0_68
0x80, 0xc2, 0x30, //0x0000041d addb $48, %dl
0x88, 0x16, //0x00000420 movb %dl, (%rsi)
//0x00000422 LBB0_69
0x4c, 0x29, 0xcb, //0x00000422 subq %r9, %rbx
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000425 .p2align 4, 0x90
//0x00000430 LBB0_70
0x80, 0x7b, 0xff, 0x30, //0x00000430 cmpb $48, $-1(%rbx)
0x48, 0x8d, 0x5b, 0xff, //0x00000434 leaq $-1(%rbx), %rbx
0x0f, 0x84, 0xf2, 0xff, 0xff, 0xff, //0x00000438 je LBB0_70
0x41, 0x88, 0x10, //0x0000043e movb %dl, (%r8)
0x48, 0x8d, 0x43, 0x01, //0x00000441 leaq $1(%rbx), %rax
0x48, 0x89, 0xc1, //0x00000445 movq %rax, %rcx
0x48, 0x29, 0xf1, //0x00000448 subq %rsi, %rcx
0x48, 0x83, 0xf9, 0x02, //0x0000044b cmpq $2, %rcx
0x0f, 0x8c, 0x06, 0x00, 0x00, 0x00, //0x0000044f jl LBB0_73
0xc6, 0x06, 0x2e, //0x00000455 movb $46, (%rsi)
0x48, 0x89, 0xc3, //0x00000458 movq %rax, %rbx
//0x0000045b LBB0_73
0xc6, 0x03, 0x65, //0x0000045b movb $101, (%rbx)
0x45, 0x85, 0xff, //0x0000045e testl %r15d, %r15d
0x0f, 0x8e, 0x41, 0x01, 0x00, 0x00, //0x00000461 jle LBB0_76
0x41, 0xff, 0xcf, //0x00000467 decl %r15d
0xc6, 0x43, 0x01, 0x2b, //0x0000046a movb $43, $1(%rbx)
0x44, 0x89, 0xf8, //0x0000046e movl %r15d, %eax
0x83, 0xf8, 0x64, //0x00000471 cmpl $100, %eax
0x0f, 0x8c, 0x43, 0x01, 0x00, 0x00, //0x00000474 jl LBB0_77
//0x0000047a LBB0_75
0x89, 0xc1, //0x0000047a movl %eax, %ecx
0xba, 0xcd, 0xcc, 0xcc, 0xcc, //0x0000047c movl $3435973837, %edx
0x48, 0x0f, 0xaf, 0xd1, //0x00000481 imulq %rcx, %rdx
0x48, 0xc1, 0xea, 0x23, //0x00000485 shrq $35, %rdx
0x8d, 0x0c, 0x12, //0x00000489 leal (%rdx,%rdx), %ecx
0x8d, 0x0c, 0x89, //0x0000048c leal (%rcx,%rcx,4), %ecx
0x29, 0xc8, //0x0000048f subl %ecx, %eax
0x48, 0x8d, 0x0d, 0xc8, 0x08, 0x00, 0x00, //0x00000491 leaq $2248(%rip), %rcx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x0c, 0x51, //0x00000498 movzwl (%rcx,%rdx,2), %ecx
0x66, 0x89, 0x4b, 0x02, //0x0000049c movw %cx, $2(%rbx)
0x0c, 0x30, //0x000004a0 orb $48, %al
0x88, 0x43, 0x04, //0x000004a2 movb %al, $4(%rbx)
0x48, 0x83, 0xc3, 0x05, //0x000004a5 addq $5, %rbx
0x49, 0x89, 0xd8, //0x000004a9 movq %rbx, %r8
0xe9, 0x7f, 0x08, 0x00, 0x00, //0x000004ac jmp LBB0_137
//0x000004b1 LBB0_32
0xd3, 0xee, //0x000004b1 shrl %cl, %esi
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x000004b3 cmpl $100000, %esi
0x0f, 0x82, 0x1a, 0x02, 0x00, 0x00, //0x000004b9 jb LBB0_52
0xb8, 0x06, 0x00, 0x00, 0x00, //0x000004bf movl $6, %eax
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x000004c4 cmpl $1000000, %esi
0x0f, 0x82, 0x20, 0x00, 0x00, 0x00, //0x000004ca jb LBB0_36
0xb8, 0x07, 0x00, 0x00, 0x00, //0x000004d0 movl $7, %eax
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x000004d5 cmpl $10000000, %esi
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x000004db jb LBB0_36
0x81, 0xfe, 0x00, 0xe1, 0xf5, 0x05, //0x000004e1 cmpl $100000000, %esi
0xb8, 0x09, 0x00, 0x00, 0x00, //0x000004e7 movl $9, %eax
0x48, 0x83, 0xd8, 0x00, //0x000004ec sbbq $0, %rax
//0x000004f0 LBB0_36
0x4c, 0x01, 0xc0, //0x000004f0 addq %r8, %rax
//0x000004f3 LBB0_37
0x89, 0xf1, //0x000004f3 movl %esi, %ecx
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000004f5 movl $3518437209, %edx
0x48, 0x0f, 0xaf, 0xd1, //0x000004fa imulq %rcx, %rdx
0x48, 0xc1, 0xea, 0x2d, //0x000004fe shrq $45, %rdx
0x69, 0xca, 0xf0, 0xd8, 0xff, 0xff, //0x00000502 imull $-10000, %edx, %ecx
0x01, 0xf1, //0x00000508 addl %esi, %ecx
0x48, 0x69, 0xf1, 0x1f, 0x85, 0xeb, 0x51, //0x0000050a imulq $1374389535, %rcx, %rsi
0x48, 0xc1, 0xee, 0x25, //0x00000511 shrq $37, %rsi
0x6b, 0xde, 0x64, //0x00000515 imull $100, %esi, %ebx
0x29, 0xd9, //0x00000518 subl %ebx, %ecx
0x48, 0x8d, 0x1d, 0x3f, 0x08, 0x00, 0x00, //0x0000051a leaq $2111(%rip), %rbx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x0c, 0x4b, //0x00000521 movzwl (%rbx,%rcx,2), %ecx
0x66, 0x89, 0x48, 0xfe, //0x00000525 movw %cx, $-2(%rax)
0x0f, 0xb7, 0x0c, 0x73, //0x00000529 movzwl (%rbx,%rsi,2), %ecx
0x66, 0x89, 0x48, 0xfc, //0x0000052d movw %cx, $-4(%rax)
0x49, 0x89, 0xc1, //0x00000531 movq %rax, %r9
0x48, 0x83, 0xc0, 0xfc, //0x00000534 addq $-4, %rax
0x89, 0xd6, //0x00000538 movl %edx, %esi
0x83, 0xfe, 0x64, //0x0000053a cmpl $100, %esi
0x0f, 0x83, 0xd5, 0x01, 0x00, 0x00, //0x0000053d jae LBB0_56
0xe9, 0x17, 0x02, 0x00, 0x00, //0x00000543 jmp LBB0_58
//0x00000548 LBB0_38
0x45, 0x85, 0xff, //0x00000548 testl %r15d, %r15d
0x0f, 0x8f, 0x90, 0x04, 0x00, 0x00, //0x0000054b jg LBB0_98
0x66, 0x41, 0xc7, 0x00, 0x30, 0x2e, //0x00000551 movw $11824, (%r8)
0x49, 0x83, 0xc0, 0x02, //0x00000557 addq $2, %r8
0x45, 0x85, 0xff, //0x0000055b testl %r15d, %r15d
0x0f, 0x89, 0x7d, 0x04, 0x00, 0x00, //0x0000055e jns LBB0_98
0x31, 0xf6, //0x00000564 xorl %esi, %esi
0x41, 0x83, 0xff, 0x80, //0x00000566 cmpl $-128, %r15d
0x0f, 0x87, 0x5a, 0x04, 0x00, 0x00, //0x0000056a ja LBB0_96
0x45, 0x89, 0xfa, //0x00000570 movl %r15d, %r10d
0x41, 0xf7, 0xd2, //0x00000573 notl %r10d
0x49, 0xff, 0xc2, //0x00000576 incq %r10
0x4c, 0x89, 0xd6, //0x00000579 movq %r10, %rsi
0x48, 0x83, 0xe6, 0x80, //0x0000057c andq $-128, %rsi
0x48, 0x8d, 0x46, 0x80, //0x00000580 leaq $-128(%rsi), %rax
0x48, 0x89, 0xc1, //0x00000584 movq %rax, %rcx
0x48, 0xc1, 0xe9, 0x07, //0x00000587 shrq $7, %rcx
0x48, 0xff, 0xc1, //0x0000058b incq %rcx
0x41, 0x89, 0xcb, //0x0000058e movl %ecx, %r11d
0x41, 0x83, 0xe3, 0x03, //0x00000591 andl $3, %r11d
0x48, 0x3d, 0x80, 0x01, 0x00, 0x00, //0x00000595 cmpq $384, %rax
0x0f, 0x83, 0x38, 0x03, 0x00, 0x00, //0x0000059b jae LBB0_90
0x31, 0xdb, //0x000005a1 xorl %ebx, %ebx
0xe9, 0xda, 0x03, 0x00, 0x00, //0x000005a3 jmp LBB0_92
//0x000005a8 LBB0_76
0xc6, 0x43, 0x01, 0x2d, //0x000005a8 movb $45, $1(%rbx)
0xb8, 0x01, 0x00, 0x00, 0x00, //0x000005ac movl $1, %eax
0x44, 0x29, 0xf8, //0x000005b1 subl %r15d, %eax
0x83, 0xf8, 0x64, //0x000005b4 cmpl $100, %eax
0x0f, 0x8d, 0xbd, 0xfe, 0xff, 0xff, //0x000005b7 jge LBB0_75
//0x000005bd LBB0_77
0x83, 0xf8, 0x0a, //0x000005bd cmpl $10, %eax
0x0f, 0x8c, 0x02, 0x01, 0x00, 0x00, //0x000005c0 jl LBB0_79
0x48, 0x98, //0x000005c6 cltq
0x48, 0x8d, 0x0d, 0x91, 0x07, 0x00, 0x00, //0x000005c8 leaq $1937(%rip), %rcx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x04, 0x41, //0x000005cf movzwl (%rcx,%rax,2), %eax
0x66, 0x89, 0x43, 0x02, //0x000005d3 movw %ax, $2(%rbx)
0x48, 0x83, 0xc3, 0x04, //0x000005d7 addq $4, %rbx
0x49, 0x89, 0xd8, //0x000005db movq %rbx, %r8
0xe9, 0x4d, 0x07, 0x00, 0x00, //0x000005de jmp LBB0_137
//0x000005e3 LBB0_43
0x48, 0x89, 0xf0, //0x000005e3 movq %rsi, %rax
0x41, 0x83, 0xfd, 0x64, //0x000005e6 cmpl $100, %r13d
0x0f, 0x82, 0x9d, 0xfd, 0xff, 0xff, //0x000005ea jb LBB0_29
//0x000005f0 LBB0_44
0x48, 0xff, 0xc8, //0x000005f0 decq %rax
0x4c, 0x8d, 0x15, 0x66, 0x07, 0x00, 0x00, //0x000005f3 leaq $1894(%rip), %r10 /* _Digits+0(%rip) */
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000005fa .p2align 4, 0x90
//0x00000600 LBB0_45
0x44, 0x89, 0xe9, //0x00000600 movl %r13d, %ecx
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x00000603 imulq $1374389535, %rcx, %rcx
0x48, 0xc1, 0xe9, 0x25, //0x0000060a shrq $37, %rcx
0x6b, 0xd9, 0x64, //0x0000060e imull $100, %ecx, %ebx
0x44, 0x89, 0xea, //0x00000611 movl %r13d, %edx
0x29, 0xda, //0x00000614 subl %ebx, %edx
0x41, 0x0f, 0xb7, 0x14, 0x52, //0x00000616 movzwl (%r10,%rdx,2), %edx
0x66, 0x89, 0x50, 0xff, //0x0000061b movw %dx, $-1(%rax)
0x48, 0x83, 0xc0, 0xfe, //0x0000061f addq $-2, %rax
0x41, 0x81, 0xfd, 0x0f, 0x27, 0x00, 0x00, //0x00000623 cmpl $9999, %r13d
0x41, 0x89, 0xcd, //0x0000062a movl %ecx, %r13d
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x0000062d ja LBB0_45
//0x00000633 LBB0_46
0x49, 0x63, 0xc7, //0x00000633 movslq %r15d, %rax
0x83, 0xf9, 0x0a, //0x00000636 cmpl $10, %ecx
0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x00000639 jb LBB0_48
0x89, 0xc9, //0x0000063f movl %ecx, %ecx
0x48, 0x8d, 0x15, 0x18, 0x07, 0x00, 0x00, //0x00000641 leaq $1816(%rip), %rdx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x0c, 0x4a, //0x00000648 movzwl (%rdx,%rcx,2), %ecx
0x66, 0x41, 0x89, 0x08, //0x0000064c movw %cx, (%r8)
0x49, 0x01, 0xc0, //0x00000650 addq %rax, %r8
0x49, 0x39, 0xc4, //0x00000653 cmpq %rax, %r12
0x0f, 0x8c, 0x17, 0x00, 0x00, 0x00, //0x00000656 jl LBB0_49
0xe9, 0xcf, 0x06, 0x00, 0x00, //0x0000065c jmp LBB0_137
//0x00000661 LBB0_48
0x80, 0xc1, 0x30, //0x00000661 addb $48, %cl
0x41, 0x88, 0x08, //0x00000664 movb %cl, (%r8)
0x49, 0x01, 0xc0, //0x00000667 addq %rax, %r8
0x49, 0x39, 0xc4, //0x0000066a cmpq %rax, %r12
0x0f, 0x8d, 0xbd, 0x06, 0x00, 0x00, //0x0000066d jge LBB0_137
//0x00000673 LBB0_49
0x4b, 0x8d, 0x04, 0x21, //0x00000673 leaq (%r9,%r12), %rax
0x4c, 0x8d, 0x5c, 0x07, 0x01, //0x00000677 leaq $1(%rdi,%rax), %r11
0x4d, 0x39, 0xc3, //0x0000067c cmpq %r8, %r11
0x4d, 0x0f, 0x46, 0xd8, //0x0000067f cmovbeq %r8, %r11
0x4a, 0x8d, 0x0c, 0x0f, //0x00000683 leaq (%rdi,%r9), %rcx
0x4c, 0x01, 0xe1, //0x00000687 addq %r12, %rcx
0x49, 0x29, 0xcb, //0x0000068a subq %rcx, %r11
0x49, 0x81, 0xfb, 0x80, 0x00, 0x00, 0x00, //0x0000068d cmpq $128, %r11
0x0f, 0x82, 0x06, 0x02, 0x00, 0x00, //0x00000694 jb LBB0_87
0x4d, 0x89, 0xda, //0x0000069a movq %r11, %r10
0x49, 0x83, 0xe2, 0x80, //0x0000069d andq $-128, %r10
0x49, 0x8d, 0x4a, 0x80, //0x000006a1 leaq $-128(%r10), %rcx
0x48, 0x89, 0xcb, //0x000006a5 movq %rcx, %rbx
0x48, 0xc1, 0xeb, 0x07, //0x000006a8 shrq $7, %rbx
0x48, 0xff, 0xc3, //0x000006ac incq %rbx
0x89, 0xda, //0x000006af movl %ebx, %edx
0x83, 0xe2, 0x03, //0x000006b1 andl $3, %edx
0x48, 0x81, 0xf9, 0x80, 0x01, 0x00, 0x00, //0x000006b4 cmpq $384, %rcx
0x0f, 0x83, 0xe8, 0x00, 0x00, 0x00, //0x000006bb jae LBB0_80
0x31, 0xc0, //0x000006c1 xorl %eax, %eax
0xe9, 0x88, 0x01, 0x00, 0x00, //0x000006c3 jmp LBB0_82
//0x000006c8 LBB0_79
0x04, 0x30, //0x000006c8 addb $48, %al
0x88, 0x43, 0x02, //0x000006ca movb %al, $2(%rbx)
0x48, 0x83, 0xc3, 0x03, //0x000006cd addq $3, %rbx
0x49, 0x89, 0xd8, //0x000006d1 movq %rbx, %r8
0xe9, 0x57, 0x06, 0x00, 0x00, //0x000006d4 jmp LBB0_137
//0x000006d9 LBB0_52
0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000006d9 movl $1, %r9d
0x83, 0xfe, 0x0a, //0x000006df cmpl $10, %esi
0x0f, 0x82, 0x21, 0x00, 0x00, 0x00, //0x000006e2 jb LBB0_55
0x41, 0xb9, 0x02, 0x00, 0x00, 0x00, //0x000006e8 movl $2, %r9d
0x83, 0xfe, 0x64, //0x000006ee cmpl $100, %esi
0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x000006f1 jb LBB0_55
0x41, 0xb9, 0x03, 0x00, 0x00, 0x00, //0x000006f7 movl $3, %r9d
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x000006fd cmpl $1000, %esi
0x0f, 0x83, 0xab, 0x01, 0x00, 0x00, //0x00000703 jae LBB0_88
//0x00000709 LBB0_55
0x4d, 0x01, 0xc1, //0x00000709 addq %r8, %r9
0x4c, 0x89, 0xc8, //0x0000070c movq %r9, %rax
0x83, 0xfe, 0x64, //0x0000070f cmpl $100, %esi
0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00000712 jb LBB0_58
//0x00000718 LBB0_56
0x48, 0xff, 0xc8, //0x00000718 decq %rax
0x4c, 0x8d, 0x15, 0x3e, 0x06, 0x00, 0x00, //0x0000071b leaq $1598(%rip), %r10 /* _Digits+0(%rip) */
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000722 .p2align 4, 0x90
//0x00000730 LBB0_57
0x89, 0xf3, //0x00000730 movl %esi, %ebx
0x89, 0xf6, //0x00000732 movl %esi, %esi
0x48, 0x69, 0xf6, 0x1f, 0x85, 0xeb, 0x51, //0x00000734 imulq $1374389535, %rsi, %rsi
0x48, 0xc1, 0xee, 0x25, //0x0000073b shrq $37, %rsi
0x6b, 0xce, 0x64, //0x0000073f imull $100, %esi, %ecx
0x89, 0xda, //0x00000742 movl %ebx, %edx
0x29, 0xca, //0x00000744 subl %ecx, %edx
0x41, 0x0f, 0xb7, 0x0c, 0x52, //0x00000746 movzwl (%r10,%rdx,2), %ecx
0x66, 0x89, 0x48, 0xff, //0x0000074b movw %cx, $-1(%rax)
0x48, 0x83, 0xc0, 0xfe, //0x0000074f addq $-2, %rax
0x81, 0xfb, 0x0f, 0x27, 0x00, 0x00, //0x00000753 cmpl $9999, %ebx
0x0f, 0x87, 0xd1, 0xff, 0xff, 0xff, //0x00000759 ja LBB0_57
//0x0000075f LBB0_58
0x83, 0xfe, 0x0a, //0x0000075f cmpl $10, %esi
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000762 jb LBB0_60
0x89, 0xf0, //0x00000768 movl %esi, %eax
0x48, 0x8d, 0x0d, 0xef, 0x05, 0x00, 0x00, //0x0000076a leaq $1519(%rip), %rcx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x04, 0x41, //0x00000771 movzwl (%rcx,%rax,2), %eax
0x66, 0x41, 0x89, 0x00, //0x00000775 movw %ax, (%r8)
0xe9, 0x07, 0x00, 0x00, 0x00, //0x00000779 jmp LBB0_61
//0x0000077e LBB0_60
0x40, 0x80, 0xc6, 0x30, //0x0000077e addb $48, %sil
0x41, 0x88, 0x30, //0x00000782 movb %sil, (%r8)
//0x00000785 LBB0_61
0x41, 0x29, 0xf9, //0x00000785 subl %edi, %r9d
0x45, 0x89, 0xc8, //0x00000788 movl %r9d, %r8d
0xe9, 0xa3, 0x05, 0x00, 0x00, //0x0000078b jmp LBB0_138
//0x00000790 LBB0_62
0x41, 0xb9, 0x04, 0x00, 0x00, 0x00, //0x00000790 movl $4, %r9d
0x48, 0x8d, 0x4b, 0xfc, //0x00000796 leaq $-4(%rbx), %rcx
0x41, 0x83, 0xfb, 0x64, //0x0000079a cmpl $100, %r11d
0x0f, 0x82, 0x73, 0xfb, 0xff, 0xff, //0x0000079e jb LBB0_31
0xe9, 0xff, 0xfb, 0xff, 0xff, //0x000007a4 jmp LBB0_64
//0x000007a9 LBB0_80
0x48, 0x29, 0xd3, //0x000007a9 subq %rdx, %rbx
0x48, 0x8d, 0x8c, 0x07, 0xe0, 0x01, 0x00, 0x00, //0x000007ac leaq $480(%rdi,%rax), %rcx
0x31, 0xc0, //0x000007b4 xorl %eax, %eax
0xc5, 0xfe, 0x6f, 0x05, 0x42, 0xf8, 0xff, 0xff, //0x000007b6 vmovdqu $-1982(%rip), %ymm0 /* LCPI0_0+0(%rip) */
0x90, 0x90, //0x000007be .p2align 4, 0x90
//0x000007c0 LBB0_81
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x20, 0xfe, 0xff, 0xff, //0x000007c0 vmovdqu %ymm0, $-480(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x40, 0xfe, 0xff, 0xff, //0x000007c9 vmovdqu %ymm0, $-448(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x60, 0xfe, 0xff, 0xff, //0x000007d2 vmovdqu %ymm0, $-416(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x80, 0xfe, 0xff, 0xff, //0x000007db vmovdqu %ymm0, $-384(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xa0, 0xfe, 0xff, 0xff, //0x000007e4 vmovdqu %ymm0, $-352(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xc0, 0xfe, 0xff, 0xff, //0x000007ed vmovdqu %ymm0, $-320(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xe0, 0xfe, 0xff, 0xff, //0x000007f6 vmovdqu %ymm0, $-288(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x00, 0xff, 0xff, 0xff, //0x000007ff vmovdqu %ymm0, $-256(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x20, 0xff, 0xff, 0xff, //0x00000808 vmovdqu %ymm0, $-224(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x40, 0xff, 0xff, 0xff, //0x00000811 vmovdqu %ymm0, $-192(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x60, 0xff, 0xff, 0xff, //0x0000081a vmovdqu %ymm0, $-160(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0x80, //0x00000823 vmovdqu %ymm0, $-128(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xa0, //0x00000829 vmovdqu %ymm0, $-96(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xc0, //0x0000082f vmovdqu %ymm0, $-64(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xe0, //0x00000835 vmovdqu %ymm0, $-32(%rcx,%rax)
0xc5, 0xfe, 0x7f, 0x04, 0x01, //0x0000083b vmovdqu %ymm0, (%rcx,%rax)
0x48, 0x05, 0x00, 0x02, 0x00, 0x00, //0x00000840 addq $512, %rax
0x48, 0x83, 0xc3, 0xfc, //0x00000846 addq $-4, %rbx
0x0f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x0000084a jne LBB0_81
//0x00000850 LBB0_82
0x48, 0x85, 0xd2, //0x00000850 testq %rdx, %rdx
0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00000853 je LBB0_85
0x4c, 0x01, 0xc8, //0x00000859 addq %r9, %rax
0x4c, 0x01, 0xe0, //0x0000085c addq %r12, %rax
0x48, 0x8d, 0x44, 0x07, 0x60, //0x0000085f leaq $96(%rdi,%rax), %rax
0x48, 0xf7, 0xda, //0x00000864 negq %rdx
0xc5, 0xfe, 0x6f, 0x05, 0x91, 0xf7, 0xff, 0xff, //0x00000867 vmovdqu $-2159(%rip), %ymm0 /* LCPI0_0+0(%rip) */
0x90, //0x0000086f .p2align 4, 0x90
//0x00000870 LBB0_84
0xc5, 0xfe, 0x7f, 0x40, 0xa0, //0x00000870 vmovdqu %ymm0, $-96(%rax)
0xc5, 0xfe, 0x7f, 0x40, 0xc0, //0x00000875 vmovdqu %ymm0, $-64(%rax)
0xc5, 0xfe, 0x7f, 0x40, 0xe0, //0x0000087a vmovdqu %ymm0, $-32(%rax)
0xc5, 0xfe, 0x7f, 0x00, //0x0000087f vmovdqu %ymm0, (%rax)
0x48, 0x83, 0xe8, 0x80, //0x00000883 subq $-128, %rax
0x48, 0xff, 0xc2, //0x00000887 incq %rdx
0x0f, 0x85, 0xe0, 0xff, 0xff, 0xff, //0x0000088a jne LBB0_84
//0x00000890 LBB0_85
0x4d, 0x39, 0xda, //0x00000890 cmpq %r11, %r10
0x0f, 0x84, 0x97, 0x04, 0x00, 0x00, //0x00000893 je LBB0_137
0x4c, 0x01, 0xd6, //0x00000899 addq %r10, %rsi
0x90, 0x90, 0x90, 0x90, //0x0000089c .p2align 4, 0x90
//0x000008a0 LBB0_87
0xc6, 0x06, 0x30, //0x000008a0 movb $48, (%rsi)
0x48, 0xff, 0xc6, //0x000008a3 incq %rsi
0x4c, 0x39, 0xc6, //0x000008a6 cmpq %r8, %rsi
0x0f, 0x82, 0xf1, 0xff, 0xff, 0xff, //0x000008a9 jb LBB0_87
0xe9, 0x7c, 0x04, 0x00, 0x00, //0x000008af jmp LBB0_137
//0x000008b4 LBB0_88
0x81, 0xfe, 0x10, 0x27, 0x00, 0x00, //0x000008b4 cmpl $10000, %esi
0x4c, 0x89, 0xc0, //0x000008ba movq %r8, %rax
0x48, 0x83, 0xd8, 0x00, //0x000008bd sbbq $0, %rax
0x48, 0x83, 0xc0, 0x05, //0x000008c1 addq $5, %rax
0x81, 0xfe, 0x10, 0x27, 0x00, 0x00, //0x000008c5 cmpl $10000, %esi
0x0f, 0x83, 0x22, 0xfc, 0xff, 0xff, //0x000008cb jae LBB0_37
0x49, 0x89, 0xc1, //0x000008d1 movq %rax, %r9
0xe9, 0x3f, 0xfe, 0xff, 0xff, //0x000008d4 jmp LBB0_56
//0x000008d9 LBB0_90
0x49, 0x8d, 0x84, 0x39, 0xe2, 0x01, 0x00, 0x00, //0x000008d9 leaq $482(%r9,%rdi), %rax
0x4d, 0x89, 0xde, //0x000008e1 movq %r11, %r14
0x49, 0x29, 0xce, //0x000008e4 subq %rcx, %r14
0x31, 0xdb, //0x000008e7 xorl %ebx, %ebx
0xc5, 0xfe, 0x6f, 0x05, 0x0f, 0xf7, 0xff, 0xff, //0x000008e9 vmovdqu $-2289(%rip), %ymm0 /* LCPI0_0+0(%rip) */
//0x000008f1 LBB0_91
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x20, 0xfe, 0xff, 0xff, //0x000008f1 vmovdqu %ymm0, $-480(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x40, 0xfe, 0xff, 0xff, //0x000008fa vmovdqu %ymm0, $-448(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x60, 0xfe, 0xff, 0xff, //0x00000903 vmovdqu %ymm0, $-416(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x80, 0xfe, 0xff, 0xff, //0x0000090c vmovdqu %ymm0, $-384(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xa0, 0xfe, 0xff, 0xff, //0x00000915 vmovdqu %ymm0, $-352(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xc0, 0xfe, 0xff, 0xff, //0x0000091e vmovdqu %ymm0, $-320(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xe0, 0xfe, 0xff, 0xff, //0x00000927 vmovdqu %ymm0, $-288(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x00, 0xff, 0xff, 0xff, //0x00000930 vmovdqu %ymm0, $-256(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x20, 0xff, 0xff, 0xff, //0x00000939 vmovdqu %ymm0, $-224(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x40, 0xff, 0xff, 0xff, //0x00000942 vmovdqu %ymm0, $-192(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x60, 0xff, 0xff, 0xff, //0x0000094b vmovdqu %ymm0, $-160(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0x80, //0x00000954 vmovdqu %ymm0, $-128(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xa0, //0x0000095a vmovdqu %ymm0, $-96(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xc0, //0x00000960 vmovdqu %ymm0, $-64(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xe0, //0x00000966 vmovdqu %ymm0, $-32(%rax,%rbx)
0xc5, 0xfe, 0x7f, 0x04, 0x18, //0x0000096c vmovdqu %ymm0, (%rax,%rbx)
0x48, 0x81, 0xc3, 0x00, 0x02, 0x00, 0x00, //0x00000971 addq $512, %rbx
0x49, 0x83, 0xc6, 0x04, //0x00000978 addq $4, %r14
0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x0000097c jne LBB0_91
//0x00000982 LBB0_92
0x4d, 0x85, 0xdb, //0x00000982 testq %r11, %r11
0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000985 je LBB0_95
0x4c, 0x01, 0xcb, //0x0000098b addq %r9, %rbx
0x48, 0x8d, 0x44, 0x1f, 0x62, //0x0000098e leaq $98(%rdi,%rbx), %rax
0x49, 0xf7, 0xdb, //0x00000993 negq %r11
0xc5, 0xfe, 0x6f, 0x05, 0x62, 0xf6, 0xff, 0xff, //0x00000996 vmovdqu $-2462(%rip), %ymm0 /* LCPI0_0+0(%rip) */
//0x0000099e LBB0_94
0xc5, 0xfe, 0x7f, 0x40, 0xa0, //0x0000099e vmovdqu %ymm0, $-96(%rax)
0xc5, 0xfe, 0x7f, 0x40, 0xc0, //0x000009a3 vmovdqu %ymm0, $-64(%rax)
0xc5, 0xfe, 0x7f, 0x40, 0xe0, //0x000009a8 vmovdqu %ymm0, $-32(%rax)
0xc5, 0xfe, 0x7f, 0x00, //0x000009ad vmovdqu %ymm0, (%rax)
0x48, 0x83, 0xe8, 0x80, //0x000009b1 subq $-128, %rax
0x49, 0xff, 0xc3, //0x000009b5 incq %r11
0x0f, 0x85, 0xe0, 0xff, 0xff, 0xff, //0x000009b8 jne LBB0_94
//0x000009be LBB0_95
0x49, 0x01, 0xf0, //0x000009be addq %rsi, %r8
0x49, 0x39, 0xf2, //0x000009c1 cmpq %rsi, %r10
0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000009c4 je LBB0_98
//0x000009ca LBB0_96
0x44, 0x89, 0xf8, //0x000009ca movl %r15d, %eax
0xf7, 0xd8, //0x000009cd negl %eax
0x90, //0x000009cf .p2align 4, 0x90
//0x000009d0 LBB0_97
0x41, 0xc6, 0x00, 0x30, //0x000009d0 movb $48, (%r8)
0x49, 0xff, 0xc0, //0x000009d4 incq %r8
0xff, 0xc6, //0x000009d7 incl %esi
0x39, 0xc6, //0x000009d9 cmpl %eax, %esi
0x0f, 0x8c, 0xef, 0xff, 0xff, 0xff, //0x000009db jl LBB0_97
//0x000009e1 LBB0_98
0x4b, 0x8d, 0x04, 0x20, //0x000009e1 leaq (%r8,%r12), %rax
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000009e5 cmpl $10000, %r13d
0x0f, 0x82, 0x63, 0x00, 0x00, 0x00, //0x000009ec jb LBB0_101
0x44, 0x89, 0xe9, //0x000009f2 movl %r13d, %ecx
0x41, 0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000009f5 movl $3518437209, %r10d
0x4c, 0x0f, 0xaf, 0xd1, //0x000009fb imulq %rcx, %r10
0x49, 0xc1, 0xea, 0x2d, //0x000009ff shrq $45, %r10
0x41, 0x69, 0xca, 0xf0, 0xd8, 0xff, 0xff, //0x00000a03 imull $-10000, %r10d, %ecx
0x44, 0x01, 0xe9, //0x00000a0a addl %r13d, %ecx
0x0f, 0x84, 0x87, 0x01, 0x00, 0x00, //0x00000a0d je LBB0_103
0x89, 0xca, //0x00000a13 movl %ecx, %edx
0x48, 0x69, 0xd2, 0x1f, 0x85, 0xeb, 0x51, //0x00000a15 imulq $1374389535, %rdx, %rdx
0x48, 0xc1, 0xea, 0x25, //0x00000a1c shrq $37, %rdx
0x6b, 0xda, 0x64, //0x00000a20 imull $100, %edx, %ebx
0x29, 0xd9, //0x00000a23 subl %ebx, %ecx
0x48, 0x8d, 0x1d, 0x34, 0x03, 0x00, 0x00, //0x00000a25 leaq $820(%rip), %rbx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x0c, 0x4b, //0x00000a2c movzwl (%rbx,%rcx,2), %ecx
0x66, 0x89, 0x48, 0xfe, //0x00000a30 movw %cx, $-2(%rax)
0x0f, 0xb7, 0x0c, 0x53, //0x00000a34 movzwl (%rbx,%rdx,2), %ecx
0x66, 0x89, 0x48, 0xfc, //0x00000a38 movw %cx, $-4(%rax)
0x45, 0x31, 0xc9, //0x00000a3c xorl %r9d, %r9d
0x48, 0x83, 0xc0, 0xfc, //0x00000a3f addq $-4, %rax
0x41, 0x83, 0xfa, 0x64, //0x00000a43 cmpl $100, %r10d
0x0f, 0x83, 0x18, 0x00, 0x00, 0x00, //0x00000a47 jae LBB0_105
//0x00000a4d LBB0_102
0x44, 0x89, 0xd1, //0x00000a4d movl %r10d, %ecx
0xe9, 0x4d, 0x00, 0x00, 0x00, //0x00000a50 jmp LBB0_107
//0x00000a55 LBB0_101
0x45, 0x31, 0xc9, //0x00000a55 xorl %r9d, %r9d
0x45, 0x89, 0xea, //0x00000a58 movl %r13d, %r10d
0x41, 0x83, 0xfa, 0x64, //0x00000a5b cmpl $100, %r10d
0x0f, 0x82, 0xe8, 0xff, 0xff, 0xff, //0x00000a5f jb LBB0_102
//0x00000a65 LBB0_105
0x48, 0xff, 0xc8, //0x00000a65 decq %rax
0x48, 0x8d, 0x15, 0xf1, 0x02, 0x00, 0x00, //0x00000a68 leaq $753(%rip), %rdx /* _Digits+0(%rip) */
0x90, //0x00000a6f .p2align 4, 0x90
//0x00000a70 LBB0_106
0x44, 0x89, 0xd1, //0x00000a70 movl %r10d, %ecx
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x00000a73 imulq $1374389535, %rcx, %rcx
0x48, 0xc1, 0xe9, 0x25, //0x00000a7a shrq $37, %rcx
0x6b, 0xd9, 0x64, //0x00000a7e imull $100, %ecx, %ebx
0x44, 0x89, 0xd6, //0x00000a81 movl %r10d, %esi
0x29, 0xde, //0x00000a84 subl %ebx, %esi
0x0f, 0xb7, 0x34, 0x72, //0x00000a86 movzwl (%rdx,%rsi,2), %esi
0x66, 0x89, 0x70, 0xff, //0x00000a8a movw %si, $-1(%rax)
0x48, 0x83, 0xc0, 0xfe, //0x00000a8e addq $-2, %rax
0x41, 0x81, 0xfa, 0x0f, 0x27, 0x00, 0x00, //0x00000a92 cmpl $9999, %r10d
0x41, 0x89, 0xca, //0x00000a99 movl %ecx, %r10d
0x0f, 0x87, 0xce, 0xff, 0xff, 0xff, //0x00000a9c ja LBB0_106
//0x00000aa2 LBB0_107
0x83, 0xf9, 0x0a, //0x00000aa2 cmpl $10, %ecx
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000aa5 jb LBB0_109
0x89, 0xc8, //0x00000aab movl %ecx, %eax
0x48, 0x8d, 0x0d, 0xac, 0x02, 0x00, 0x00, //0x00000aad leaq $684(%rip), %rcx /* _Digits+0(%rip) */
0x0f, 0xb7, 0x04, 0x41, //0x00000ab4 movzwl (%rcx,%rax,2), %eax
0x66, 0x41, 0x89, 0x00, //0x00000ab8 movw %ax, (%r8)
0xe9, 0x06, 0x00, 0x00, 0x00, //0x00000abc jmp LBB0_110
//0x00000ac1 LBB0_109
0x80, 0xc1, 0x30, //0x00000ac1 addb $48, %cl
0x41, 0x88, 0x08, //0x00000ac4 movb %cl, (%r8)
//0x00000ac7 LBB0_110
0x4d, 0x29, 0xcc, //0x00000ac7 subq %r9, %r12
0x49, 0x8d, 0x74, 0x24, 0x01, //0x00000aca leaq $1(%r12), %rsi
0x49, 0x8d, 0x54, 0x24, 0x61, //0x00000acf leaq $97(%r12), %rdx
0x49, 0x8d, 0x44, 0x24, 0x02, //0x00000ad4 leaq $2(%r12), %rax
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ad9 .p2align 4, 0x90
//0x00000ae0 LBB0_111
0x48, 0xff, 0xca, //0x00000ae0 decq %rdx
0x48, 0xff, 0xce, //0x00000ae3 decq %rsi
0x48, 0xff, 0xc8, //0x00000ae6 decq %rax
0x43, 0x80, 0x7c, 0x20, 0xff, 0x30, //0x00000ae9 cmpb $48, $-1(%r8,%r12)
0x4d, 0x8d, 0x64, 0x24, 0xff, //0x00000aef leaq $-1(%r12), %r12
0x0f, 0x84, 0xe6, 0xff, 0xff, 0xff, //0x00000af4 je LBB0_111
0x4d, 0x8d, 0x0c, 0x30, //0x00000afa leaq (%r8,%rsi), %r9
0x45, 0x85, 0xff, //0x00000afe testl %r15d, %r15d
0x0f, 0x8e, 0x8b, 0x00, 0x00, 0x00, //0x00000b01 jle LBB0_116
0x44, 0x89, 0xc9, //0x00000b07 movl %r9d, %ecx
0x44, 0x29, 0xc1, //0x00000b0a subl %r8d, %ecx
0x41, 0x39, 0xcf, //0x00000b0d cmpl %ecx, %r15d
0x0f, 0x8d, 0x23, 0x00, 0x00, 0x00, //0x00000b10 jge LBB0_117
0x43, 0x8d, 0x0c, 0x07, //0x00000b16 leal (%r15,%r8), %ecx
0x41, 0x29, 0xc9, //0x00000b1a subl %ecx, %r9d
0x49, 0x8d, 0x49, 0xff, //0x00000b1d leaq $-1(%r9), %rcx
0x45, 0x89, 0xca, //0x00000b21 movl %r9d, %r10d
0x41, 0x83, 0xe2, 0x03, //0x00000b24 andl $3, %r10d
0x48, 0x83, 0xf9, 0x03, //0x00000b28 cmpq $3, %rcx
0x0f, 0x83, 0x81, 0x00, 0x00, 0x00, //0x00000b2c jae LBB0_121
0x31, 0xc9, //0x00000b32 xorl %ecx, %ecx
0xe9, 0xa3, 0x00, 0x00, 0x00, //0x00000b34 jmp LBB0_124
//0x00000b39 LBB0_117
0x0f, 0x8e, 0x53, 0x00, 0x00, 0x00, //0x00000b39 jle LBB0_116
0x45, 0x01, 0xc7, //0x00000b3f addl %r8d, %r15d
0x45, 0x89, 0xce, //0x00000b42 movl %r9d, %r14d
0x41, 0xf7, 0xd6, //0x00000b45 notl %r14d
0x45, 0x01, 0xfe, //0x00000b48 addl %r15d, %r14d
0x45, 0x31, 0xd2, //0x00000b4b xorl %r10d, %r10d
0x4d, 0x89, 0xcb, //0x00000b4e movq %r9, %r11
0x41, 0x83, 0xfe, 0x7e, //0x00000b51 cmpl $126, %r14d
0x0f, 0x86, 0xb4, 0x01, 0x00, 0x00, //0x00000b55 jbe LBB0_135
0x49, 0xff, 0xc6, //0x00000b5b incq %r14
0x4d, 0x89, 0xf2, //0x00000b5e movq %r14, %r10
0x49, 0x83, 0xe2, 0x80, //0x00000b61 andq $-128, %r10
0x4f, 0x8d, 0x1c, 0x10, //0x00000b65 leaq (%r8,%r10), %r11
0x49, 0x8d, 0x5a, 0x80, //0x00000b69 leaq $-128(%r10), %rbx
0x48, 0x89, 0xd9, //0x00000b6d movq %rbx, %rcx
0x48, 0xc1, 0xe9, 0x07, //0x00000b70 shrq $7, %rcx
0x48, 0xff, 0xc1, //0x00000b74 incq %rcx
0x41, 0x89, 0xcc, //0x00000b77 movl %ecx, %r12d
0x41, 0x83, 0xe4, 0x03, //0x00000b7a andl $3, %r12d
0x48, 0x81, 0xfb, 0x80, 0x01, 0x00, 0x00, //0x00000b7e cmpq $384, %rbx
0x0f, 0x83, 0x8f, 0x00, 0x00, 0x00, //0x00000b85 jae LBB0_129
0x31, 0xc9, //0x00000b8b xorl %ecx, %ecx
0xe9, 0x30, 0x01, 0x00, 0x00, //0x00000b8d jmp LBB0_131
//0x00000b92 LBB0_116
0x4d, 0x89, 0xc8, //0x00000b92 movq %r9, %r8
0xe9, 0x96, 0x01, 0x00, 0x00, //0x00000b95 jmp LBB0_137
//0x00000b9a LBB0_103
0x41, 0xb9, 0x04, 0x00, 0x00, 0x00, //0x00000b9a movl $4, %r9d
0x48, 0x83, 0xc0, 0xfc, //0x00000ba0 addq $-4, %rax
0x41, 0x83, 0xfa, 0x64, //0x00000ba4 cmpl $100, %r10d
0x0f, 0x82, 0x9f, 0xfe, 0xff, 0xff, //0x00000ba8 jb LBB0_102
0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00000bae jmp LBB0_105
//0x00000bb3 LBB0_121
0x4d, 0x89, 0xd3, //0x00000bb3 movq %r10, %r11
0x4d, 0x29, 0xcb, //0x00000bb6 subq %r9, %r11
0x31, 0xc9, //0x00000bb9 xorl %ecx, %ecx
0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bbb .p2align 4, 0x90
//0x00000bc0 LBB0_122
0x49, 0x8d, 0x1c, 0x08, //0x00000bc0 leaq (%r8,%rcx), %rbx
0x8b, 0x54, 0x1e, 0xfc, //0x00000bc4 movl $-4(%rsi,%rbx), %edx
0x89, 0x54, 0x1e, 0xfd, //0x00000bc8 movl %edx, $-3(%rsi,%rbx)
0x48, 0x83, 0xc1, 0xfc, //0x00000bcc addq $-4, %rcx
0x49, 0x39, 0xcb, //0x00000bd0 cmpq %rcx, %r11
0x0f, 0x85, 0xe7, 0xff, 0xff, 0xff, //0x00000bd3 jne LBB0_122
0x48, 0xf7, 0xd9, //0x00000bd9 negq %rcx
//0x00000bdc LBB0_124
0x4d, 0x85, 0xd2, //0x00000bdc testq %r10, %r10
0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00000bdf je LBB0_127
0x49, 0xf7, 0xda, //0x00000be5 negq %r10
0x4c, 0x89, 0xc2, //0x00000be8 movq %r8, %rdx
0x48, 0x29, 0xca, //0x00000beb subq %rcx, %rdx
0x31, 0xc9, //0x00000bee xorl %ecx, %ecx
//0x00000bf0 .p2align 4, 0x90
//0x00000bf0 LBB0_126
0x48, 0x8d, 0x34, 0x0a, //0x00000bf0 leaq (%rdx,%rcx), %rsi
0x41, 0x0f, 0xb6, 0x1c, 0x34, //0x00000bf4 movzbl (%r12,%rsi), %ebx
0x41, 0x88, 0x5c, 0x34, 0x01, //0x00000bf9 movb %bl, $1(%r12,%rsi)
0x48, 0xff, 0xc9, //0x00000bfe decq %rcx
0x49, 0x39, 0xca, //0x00000c01 cmpq %rcx, %r10
0x0f, 0x85, 0xe6, 0xff, 0xff, 0xff, //0x00000c04 jne LBB0_126
//0x00000c0a LBB0_127
0x49, 0x63, 0xcf, //0x00000c0a movslq %r15d, %rcx
0x41, 0xc6, 0x04, 0x08, 0x2e, //0x00000c0d movb $46, (%r8,%rcx)
0x49, 0x01, 0xc0, //0x00000c12 addq %rax, %r8
0xe9, 0x16, 0x01, 0x00, 0x00, //0x00000c15 jmp LBB0_137
//0x00000c1a LBB0_129
0x4c, 0x89, 0xe3, //0x00000c1a movq %r12, %rbx
0x48, 0x29, 0xcb, //0x00000c1d subq %rcx, %rbx
0x31, 0xc9, //0x00000c20 xorl %ecx, %ecx
0xc5, 0xfe, 0x6f, 0x05, 0xd6, 0xf3, 0xff, 0xff, //0x00000c22 vmovdqu $-3114(%rip), %ymm0 /* LCPI0_0+0(%rip) */
//0x00000c2a LBB0_130
0x49, 0x8d, 0x04, 0x08, //0x00000c2a leaq (%r8,%rcx), %rax
0xc5, 0xfe, 0x7f, 0x04, 0x06, //0x00000c2e vmovdqu %ymm0, (%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x20, //0x00000c33 vmovdqu %ymm0, $32(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x40, //0x00000c39 vmovdqu %ymm0, $64(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x60, //0x00000c3f vmovdqu %ymm0, $96(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x80, 0x00, 0x00, 0x00, //0x00000c45 vmovdqu %ymm0, $128(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xa0, 0x00, 0x00, 0x00, //0x00000c4e vmovdqu %ymm0, $160(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xc0, 0x00, 0x00, 0x00, //0x00000c57 vmovdqu %ymm0, $192(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xe0, 0x00, 0x00, 0x00, //0x00000c60 vmovdqu %ymm0, $224(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x00, 0x01, 0x00, 0x00, //0x00000c69 vmovdqu %ymm0, $256(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x20, 0x01, 0x00, 0x00, //0x00000c72 vmovdqu %ymm0, $288(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x40, 0x01, 0x00, 0x00, //0x00000c7b vmovdqu %ymm0, $320(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x60, 0x01, 0x00, 0x00, //0x00000c84 vmovdqu %ymm0, $352(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x80, 0x01, 0x00, 0x00, //0x00000c8d vmovdqu %ymm0, $384(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xa0, 0x01, 0x00, 0x00, //0x00000c96 vmovdqu %ymm0, $416(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xc0, 0x01, 0x00, 0x00, //0x00000c9f vmovdqu %ymm0, $448(%rsi,%rax)
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xe0, 0x01, 0x00, 0x00, //0x00000ca8 vmovdqu %ymm0, $480(%rsi,%rax)
0x48, 0x81, 0xc1, 0x00, 0x02, 0x00, 0x00, //0x00000cb1 addq $512, %rcx
0x48, 0x83, 0xc3, 0x04, //0x00000cb8 addq $4, %rbx
0x0f, 0x85, 0x68, 0xff, 0xff, 0xff, //0x00000cbc jne LBB0_130
//0x00000cc2 LBB0_131
0x49, 0x01, 0xf3, //0x00000cc2 addq %rsi, %r11
0x4d, 0x85, 0xe4, //0x00000cc5 testq %r12, %r12
0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000cc8 je LBB0_134
0x49, 0x01, 0xc8, //0x00000cce addq %rcx, %r8
0x49, 0x01, 0xd0, //0x00000cd1 addq %rdx, %r8
0x49, 0xf7, 0xdc, //0x00000cd4 negq %r12
0xc5, 0xfe, 0x6f, 0x05, 0x21, 0xf3, 0xff, 0xff, //0x00000cd7 vmovdqu $-3295(%rip), %ymm0 /* LCPI0_0+0(%rip) */
//0x00000cdf LBB0_133
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xa0, //0x00000cdf vmovdqu %ymm0, $-96(%r8)
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xc0, //0x00000ce5 vmovdqu %ymm0, $-64(%r8)
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xe0, //0x00000ceb vmovdqu %ymm0, $-32(%r8)
0xc4, 0xc1, 0x7e, 0x7f, 0x00, //0x00000cf1 vmovdqu %ymm0, (%r8)
0x49, 0x83, 0xe8, 0x80, //0x00000cf6 subq $-128, %r8
0x49, 0xff, 0xc4, //0x00000cfa incq %r12
0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00000cfd jne LBB0_133
//0x00000d03 LBB0_134
0x4d, 0x89, 0xd8, //0x00000d03 movq %r11, %r8
0x4d, 0x39, 0xd6, //0x00000d06 cmpq %r10, %r14
0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000d09 je LBB0_137
//0x00000d0f LBB0_135
0x45, 0x29, 0xd7, //0x00000d0f subl %r10d, %r15d
0x45, 0x29, 0xcf, //0x00000d12 subl %r9d, %r15d
0x4d, 0x89, 0xd8, //0x00000d15 movq %r11, %r8
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d18 .p2align 4, 0x90
//0x00000d20 LBB0_136
0x41, 0xc6, 0x00, 0x30, //0x00000d20 movb $48, (%r8)
0x49, 0xff, 0xc0, //0x00000d24 incq %r8
0x41, 0xff, 0xcf, //0x00000d27 decl %r15d
0x0f, 0x85, 0xf0, 0xff, 0xff, 0xff, //0x00000d2a jne LBB0_136
//0x00000d30 LBB0_137
0x41, 0x29, 0xf8, //0x00000d30 subl %edi, %r8d
//0x00000d33 LBB0_138
0x44, 0x89, 0xc0, //0x00000d33 movl %r8d, %eax
0x5b, //0x00000d36 popq %rbx
0x41, 0x5c, //0x00000d37 popq %r12
0x41, 0x5d, //0x00000d39 popq %r13
0x41, 0x5e, //0x00000d3b popq %r14
0x41, 0x5f, //0x00000d3d popq %r15
0x5d, //0x00000d3f popq %rbp
0xc5, 0xf8, 0x77, //0x00000d40 vzeroupper
0xc3, //0x00000d43 retq
//0x00000d44 LBB0_139
0x45, 0x31, 0xc0, //0x00000d44 xorl %r8d, %r8d
0xe9, 0xe7, 0xff, 0xff, 0xff, //0x00000d47 jmp LBB0_138
//0x00000d4c LBB0_140
0x41, 0xbf, 0x6b, 0xff, 0xff, 0xff, //0x00000d4c movl $-149, %r15d
0x89, 0xc6, //0x00000d52 movl %eax, %esi
0xe9, 0x46, 0xf3, 0xff, 0xff, //0x00000d54 jmp LBB0_5
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d59 .p2align 4, 0x00
//0x00000d60 _Digits
0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000d60 QUAD $0x3330323031303030; QUAD $0x3730363035303430 // .ascii 16, '0001020304050607'
0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000d70 QUAD $0x3131303139303830; QUAD $0x3531343133313231 // .ascii 16, '0809101112131415'
0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000d80 QUAD $0x3931383137313631; QUAD $0x3332323231323032 // .ascii 16, '1617181920212223'
0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000d90 QUAD $0x3732363235323432; QUAD $0x3133303339323832 // .ascii 16, '2425262728293031'
0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000da0 QUAD $0x3533343333333233; QUAD $0x3933383337333633 // .ascii 16, '3233343536373839'
0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000db0 QUAD $0x3334323431343034; QUAD $0x3734363435343434 // .ascii 16, '4041424344454647'
0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000dc0 QUAD $0x3135303539343834; QUAD $0x3535343533353235 // .ascii 16, '4849505152535455'
0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000dd0 QUAD $0x3935383537353635; QUAD $0x3336323631363036 // .ascii 16, '5657585960616263'
0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x00000de0 QUAD $0x3736363635363436; QUAD $0x3137303739363836 // .ascii 16, '6465666768697071'
0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x00000df0 QUAD $0x3537343733373237; QUAD $0x3937383737373637 // .ascii 16, '7273747576777879'
0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x00000e00 QUAD $0x3338323831383038; QUAD $0x3738363835383438 // .ascii 16, '8081828384858687'
0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x00000e10 QUAD $0x3139303939383838; QUAD $0x3539343933393239 // .ascii 16, '8889909192939495'
0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x00000e20 QUAD $0x3939383937393639 // .ascii 8, '96979899'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e28 .p2align 4, 0x00
//0x00000e30 _pow10_ceil_sig_f32.g
0xf5, 0xfc, 0x43, 0x4b, 0x2c, 0xb3, 0xce, 0x81, //0x00000e30 .quad -9093133594791772939
0x32, 0xfc, 0x14, 0x5e, 0xf7, 0x5f, 0x42, 0xa2, //0x00000e38 .quad -6754730975062328270
0x3f, 0x3b, 0x9a, 0x35, 0xf5, 0xf7, 0xd2, 0xca, //0x00000e40 .quad -3831727700400522433
0x0e, 0xca, 0x00, 0x83, 0xf2, 0xb5, 0x87, 0xfd, //0x00000e48 .quad -177973607073265138
0x49, 0x7e, 0xe0, 0x91, 0xb7, 0xd1, 0x74, 0x9e, //0x00000e50 .quad -7028762532061872567
0xdb, 0x9d, 0x58, 0x76, 0x25, 0x06, 0x12, 0xc6, //0x00000e58 .quad -4174267146649952805
0x52, 0xc5, 0xee, 0xd3, 0xae, 0x87, 0x96, 0xf7, //0x00000e60 .quad -606147914885053102
0x53, 0x3b, 0x75, 0x44, 0xcd, 0x14, 0xbe, 0x9a, //0x00000e68 .quad -7296371474444240045
0x28, 0x8a, 0x92, 0x95, 0x00, 0x9a, 0x6d, 0xc1, //0x00000e70 .quad -4508778324627912152
0xb2, 0x2c, 0xf7, 0xba, 0x80, 0x00, 0xc9, 0xf1, //0x00000e78 .quad -1024286887357502286
0xef, 0x7b, 0xda, 0x74, 0x50, 0xa0, 0x1d, 0x97, //0x00000e80 .quad -7557708332239520785
0xeb, 0x1a, 0x11, 0x92, 0x64, 0x08, 0xe5, 0xbc, //0x00000e88 .quad -4835449396872013077
0xa6, 0x61, 0x95, 0xb6, 0x7d, 0x4a, 0x1e, 0xec, //0x00000e90 .quad -1432625727662628442
0x08, 0x5d, 0x1d, 0x92, 0x8e, 0xee, 0x92, 0x93, //0x00000e98 .quad -7812920107430224632
0x4a, 0xb4, 0xa4, 0x36, 0x32, 0xaa, 0x77, 0xb8, //0x00000ea0 .quad -5154464115860392886
0x5c, 0xe1, 0x4d, 0xc4, 0xbe, 0x94, 0x95, 0xe6, //0x00000ea8 .quad -1831394126398103204
0xda, 0xac, 0xb0, 0x3a, 0xf7, 0x7c, 0x1d, 0x90, //0x00000eb0 .quad -8062150356639896358
0x10, 0xd8, 0x5c, 0x09, 0x35, 0xdc, 0x24, 0xb4, //0x00000eb8 .quad -5466001927372482544
0x14, 0x0e, 0xb4, 0x4b, 0x42, 0x13, 0x2e, 0xe1, //0x00000ec0 .quad -2220816390788215276
0xcc, 0x88, 0x50, 0x6f, 0x09, 0xcc, 0xbc, 0x8c, //0x00000ec8 .quad -8305539271883716404
0xff, 0xaa, 0x24, 0xcb, 0x0b, 0xff, 0xeb, 0xaf, //0x00000ed0 .quad -5770238071427257601
0xbf, 0xd5, 0xed, 0xbd, 0xce, 0xfe, 0xe6, 0xdb, //0x00000ed8 .quad -2601111570856684097
0x98, 0xa5, 0xb4, 0x36, 0x41, 0x5f, 0x70, 0x89, //0x00000ee0 .quad -8543223759426509416
0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000ee8 .quad -6067343680855748867
0xbd, 0x42, 0x7a, 0xe5, 0xd5, 0x94, 0xbf, 0xd6, //0x00000ef0 .quad -2972493582642298179
0xb6, 0x69, 0x6c, 0xaf, 0x05, 0xbd, 0x37, 0x86, //0x00000ef8 .quad -8775337516792518218
0x24, 0x84, 0x47, 0x1b, 0x47, 0xac, 0xc5, 0xa7, //0x00000f00 .quad -6357485877563259868
0x2c, 0x65, 0x19, 0xe2, 0x58, 0x17, 0xb7, 0xd1, //0x00000f08 .quad -3335171328526686932
0x3c, 0xdf, 0x4f, 0x8d, 0x97, 0x6e, 0x12, 0x83, //0x00000f10 .quad -9002011107970261188
0x0b, 0xd7, 0xa3, 0x70, 0x3d, 0x0a, 0xd7, 0xa3, //0x00000f18 .quad -6640827866535438581
0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, //0x00000f20 .quad -3689348814741910323
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //0x00000f28 .quad -9223372036854775808
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, //0x00000f30 .quad -6917529027641081856
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, //0x00000f38 .quad -4035225266123964416
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, //0x00000f40 .quad -432345564227567616
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, //0x00000f48 .quad -7187745005283311616
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc3, //0x00000f50 .quad -4372995238176751616
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xf4, //0x00000f58 .quad -854558029293551616
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, //0x00000f60 .quad -7451627795949551616
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xbc, 0xbe, //0x00000f68 .quad -4702848726509551616
0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6b, 0xee, //0x00000f70 .quad -1266874889709551616
0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x02, 0x95, //0x00000f78 .quad -7709325833709551616
0x00, 0x00, 0x00, 0x00, 0x40, 0xb7, 0x43, 0xba, //0x00000f80 .quad -5024971273709551616
0x00, 0x00, 0x00, 0x00, 0x10, 0xa5, 0xd4, 0xe8, //0x00000f88 .quad -1669528073709551616
0x00, 0x00, 0x00, 0x00, 0x2a, 0xe7, 0x84, 0x91, //0x00000f90 .quad -7960984073709551616
0x00, 0x00, 0x00, 0x80, 0xf4, 0x20, 0xe6, 0xb5, //0x00000f98 .quad -5339544073709551616
0x00, 0x00, 0x00, 0xa0, 0x31, 0xa9, 0x5f, 0xe3, //0x00000fa0 .quad -2062744073709551616
0x00, 0x00, 0x00, 0x04, 0xbf, 0xc9, 0x1b, 0x8e, //0x00000fa8 .quad -8206744073709551616
0x00, 0x00, 0x00, 0xc5, 0x2e, 0xbc, 0xa2, 0xb1, //0x00000fb0 .quad -5646744073709551616
0x00, 0x00, 0x40, 0x76, 0x3a, 0x6b, 0x0b, 0xde, //0x00000fb8 .quad -2446744073709551616
0x00, 0x00, 0xe8, 0x89, 0x04, 0x23, 0xc7, 0x8a, //0x00000fc0 .quad -8446744073709551616
0x00, 0x00, 0x62, 0xac, 0xc5, 0xeb, 0x78, 0xad, //0x00000fc8 .quad -5946744073709551616
0x00, 0x80, 0x7a, 0x17, 0xb7, 0x26, 0xd7, 0xd8, //0x00000fd0 .quad -2821744073709551616
0x00, 0x90, 0xac, 0x6e, 0x32, 0x78, 0x86, 0x87, //0x00000fd8 .quad -8681119073709551616
0x00, 0xb4, 0x57, 0x0a, 0x3f, 0x16, 0x68, 0xa9, //0x00000fe0 .quad -6239712823709551616
0x00, 0xa1, 0xed, 0xcc, 0xce, 0x1b, 0xc2, 0xd3, //0x00000fe8 .quad -3187955011209551616
0xa0, 0x84, 0x14, 0x40, 0x61, 0x51, 0x59, 0x84, //0x00000ff0 .quad -8910000909647051616
0xc8, 0xa5, 0x19, 0x90, 0xb9, 0xa5, 0x6f, 0xa5, //0x00000ff8 .quad -6525815118631426616
0x3a, 0x0f, 0x20, 0xf4, 0x27, 0x8f, 0xcb, 0xce, //0x00001000 .quad -3545582879861895366
0x85, 0x09, 0x94, 0xf8, 0x78, 0x39, 0x3f, 0x81, //0x00001008 .quad -9133518327554766459
0xe6, 0x0b, 0xb9, 0x36, 0xd7, 0x07, 0x8f, 0xa1, //0x00001010 .quad -6805211891016070170
0xdf, 0x4e, 0x67, 0x04, 0xcd, 0xc9, 0xf2, 0xc9, //0x00001018 .quad -3894828845342699809
0x97, 0x22, 0x81, 0x45, 0x40, 0x7c, 0x6f, 0xfc, //0x00001020 .quad -256850038250986857
0x9e, 0xb5, 0x70, 0x2b, 0xa8, 0xad, 0xc5, 0x9d, //0x00001028 .quad -7078060301547948642
0x06, 0xe3, 0x4c, 0x36, 0x12, 0x19, 0x37, 0xc5, //0x00001030 .quad -4235889358507547898
0xc7, 0x1b, 0xe0, 0xc3, 0x56, 0xdf, 0x84, 0xf6, //0x00001038 .quad -683175679707046969
0x5d, 0x11, 0x6c, 0x3a, 0x96, 0x0b, 0x13, 0x9a, //0x00001040 .quad -7344513827457986211
0xb4, 0x15, 0x07, 0xc9, 0x7b, 0xce, 0x97, 0xc0, //0x00001048 .quad -4568956265895094860
0x21, 0xdb, 0x48, 0xbb, 0x1a, 0xc2, 0xbd, 0xf0, //0x00001050 .quad -1099509313941480671
0xf5, 0x88, 0x0d, 0xb5, 0x50, 0x99, 0x76, 0x96, //0x00001058 .quad -7604722348854507275
0x32, 0xeb, 0x50, 0xe2, 0xa4, 0x3f, 0x14, 0xbc, //0x00001060 .quad -4894216917640746190
0xfe, 0x25, 0xe5, 0x1a, 0x8e, 0x4f, 0x19, 0xeb, //0x00001068 .quad -1506085128623544834
0xbf, 0x37, 0xcf, 0xd0, 0xb8, 0xd1, 0xef, 0x92, //0x00001070 .quad -7858832233030797377
0xae, 0x05, 0x03, 0x05, 0x27, 0xc6, 0xab, 0xb7, //0x00001078 .quad -5211854272861108818
0x1a, 0xc7, 0x43, 0xc6, 0xb0, 0xb7, 0x96, 0xe5, //0x00001080 .quad -1903131822648998118
0x70, 0x5c, 0xea, 0x7b, 0xce, 0x32, 0x7e, 0x8f, //0x00001088 .quad -8106986416796705680
0x8c, 0xf3, 0xe4, 0x1a, 0x82, 0xbf, 0x5d, 0xb3, //0x00001090 .quad -5522047002568494196
}

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_f64toa func(out unsafe.Pointer, val float64) (ret int)
var S_f64toa uintptr
//go:nosplit
func f64toa(out *byte, val float64) (ret int) {
return F_f64toa((rt.NoEscape(unsafe.Pointer(out))), val)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__f64toa = 32
)
const (
_stack__f64toa = 56
)
const (
_size__f64toa = 4704
)
var (
_pcsp__f64toa = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{4614, 56},
{4618, 48},
{4619, 40},
{4621, 32},
{4623, 24},
{4625, 16},
{4627, 8},
{4631, 0},
{4694, 56},
}
)
var _cfunc_f64toa = []loader.CFunc{
{"_f64toa_entry", 0, _entry__f64toa, 0, nil},
{"_f64toa", _entry__f64toa, _size__f64toa, _stack__f64toa, _pcsp__f64toa},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var F_get_by_path func(s unsafe.Pointer, p unsafe.Pointer, path unsafe.Pointer, m unsafe.Pointer) (ret int)
var S_get_by_path uintptr
//go:nosplit
func get_by_path(s *string, p *int, path *[]interface{}, m *types.StateMachine) (ret int) {
return F_get_by_path(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(path)), rt.NoEscape(unsafe.Pointer(m)))
}

View File

@ -0,0 +1,45 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__get_by_path = 224
)
const (
_stack__get_by_path = 272
)
const (
_size__get_by_path = 20184
)
var (
_pcsp__get_by_path = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{17077, 272},
{17078, 264},
{17080, 256},
{17082, 248},
{17084, 240},
{17086, 232},
{17090, 224},
{20184, 272},
}
)
var _cfunc_get_by_path = []loader.CFunc{
{"_get_by_path_entry", 0, _entry__get_by_path, 0, nil},
{"_get_by_path", _entry__get_by_path, _size__get_by_path, _stack__get_by_path, _pcsp__get_by_path},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_html_escape func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer) (ret int)
var S_html_escape uintptr
//go:nosplit
func html_escape(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int) (ret int) {
return F_html_escape(rt.NoEscape(sp), nb, dp, rt.NoEscape(unsafe.Pointer(dn)))
}

View File

@ -0,0 +1,45 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__html_escape = 64
)
const (
_stack__html_escape = 72
)
const (
_size__html_escape = 1248
)
var (
_pcsp__html_escape = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1224, 72},
{1228, 48},
{1229, 40},
{1231, 32},
{1233, 24},
{1235, 16},
{1237, 8},
{1239, 0},
}
)
var _cfunc_html_escape = []loader.CFunc{
{"_html_escape_entry", 0, _entry__html_escape, 0, nil},
{"_html_escape", _entry__html_escape, _size__html_escape, _stack__html_escape, _pcsp__html_escape},
}

View File

@ -0,0 +1,620 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_html_escape = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, // QUAD $0x2626262626262626; QUAD $0x2626262626262626 // .space 16, '&&&&&&&&&&&&&&&&'
//0x00000010 LCPI0_1
0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, //0x00000010 QUAD $0xe2e2e2e2e2e2e2e2; QUAD $0xe2e2e2e2e2e2e2e2 // .space 16, '\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2'
//0x00000020 LCPI0_2
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, //0x00000020 QUAD $0x0202020202020202; QUAD $0x0202020202020202 // .space 16, '\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02'
//0x00000030 LCPI0_3
0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, //0x00000030 QUAD $0x3e3e3e3e3e3e3e3e; QUAD $0x3e3e3e3e3e3e3e3e // .space 16, '>>>>>>>>>>>>>>>>'
//0x00000040 .p2align 4, 0x90
//0x00000040 _html_escape
0x55, //0x00000040 pushq %rbp
0x48, 0x89, 0xe5, //0x00000041 movq %rsp, %rbp
0x41, 0x57, //0x00000044 pushq %r15
0x41, 0x56, //0x00000046 pushq %r14
0x41, 0x55, //0x00000048 pushq %r13
0x41, 0x54, //0x0000004a pushq %r12
0x53, //0x0000004c pushq %rbx
0x48, 0x83, 0xec, 0x18, //0x0000004d subq $24, %rsp
0x48, 0x89, 0x4d, 0xc0, //0x00000051 movq %rcx, $-64(%rbp)
0x49, 0x89, 0xd2, //0x00000055 movq %rdx, %r10
0x48, 0x89, 0x55, 0xc8, //0x00000058 movq %rdx, $-56(%rbp)
0x48, 0x89, 0x7d, 0xd0, //0x0000005c movq %rdi, $-48(%rbp)
0x48, 0x89, 0xf8, //0x00000060 movq %rdi, %rax
0x48, 0x85, 0xf6, //0x00000063 testq %rsi, %rsi
0x0f, 0x8e, 0x73, 0x04, 0x00, 0x00, //0x00000066 jle LBB0_59
0x48, 0x8b, 0x45, 0xc0, //0x0000006c movq $-64(%rbp), %rax
0x4c, 0x8b, 0x08, //0x00000070 movq (%rax), %r9
0xc5, 0xfa, 0x6f, 0x05, 0x85, 0xff, 0xff, 0xff, //0x00000073 vmovdqu $-123(%rip), %xmm0 /* LCPI0_0+0(%rip) */
0xc5, 0xfa, 0x6f, 0x0d, 0x8d, 0xff, 0xff, 0xff, //0x0000007b vmovdqu $-115(%rip), %xmm1 /* LCPI0_1+0(%rip) */
0xc5, 0xfa, 0x6f, 0x15, 0x95, 0xff, 0xff, 0xff, //0x00000083 vmovdqu $-107(%rip), %xmm2 /* LCPI0_2+0(%rip) */
0xc5, 0xfa, 0x6f, 0x1d, 0x9d, 0xff, 0xff, 0xff, //0x0000008b vmovdqu $-99(%rip), %xmm3 /* LCPI0_3+0(%rip) */
0x49, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, //0x00000093 movabsq $5764607797912141824, %r14
0x4c, 0x8d, 0x1d, 0x7c, 0x04, 0x00, 0x00, //0x0000009d leaq $1148(%rip), %r11 /* __HtmlQuoteTab+0(%rip) */
0x4c, 0x8b, 0x7d, 0xd0, //0x000000a4 movq $-48(%rbp), %r15
0x4c, 0x8b, 0x55, 0xc8, //0x000000a8 movq $-56(%rbp), %r10
0x90, 0x90, 0x90, 0x90, //0x000000ac .p2align 4, 0x90
//0x000000b0 LBB0_2
0x4d, 0x85, 0xc9, //0x000000b0 testq %r9, %r9
0x0f, 0x8e, 0x45, 0x04, 0x00, 0x00, //0x000000b3 jle LBB0_61
0x48, 0x83, 0xfe, 0x0f, //0x000000b9 cmpq $15, %rsi
0x0f, 0x9f, 0xc3, //0x000000bd setg %bl
0x4d, 0x89, 0xcc, //0x000000c0 movq %r9, %r12
0x4d, 0x89, 0xd0, //0x000000c3 movq %r10, %r8
0x48, 0x89, 0xf0, //0x000000c6 movq %rsi, %rax
0x4d, 0x89, 0xfd, //0x000000c9 movq %r15, %r13
0x49, 0x83, 0xf9, 0x10, //0x000000cc cmpq $16, %r9
0x0f, 0x8c, 0x7a, 0x00, 0x00, 0x00, //0x000000d0 jl LBB0_9
0x48, 0x83, 0xfe, 0x10, //0x000000d6 cmpq $16, %rsi
0x0f, 0x8c, 0x70, 0x00, 0x00, 0x00, //0x000000da jl LBB0_9
0x4d, 0x89, 0xfd, //0x000000e0 movq %r15, %r13
0x48, 0x89, 0xf0, //0x000000e3 movq %rsi, %rax
0x4d, 0x89, 0xd0, //0x000000e6 movq %r10, %r8
0x4c, 0x89, 0xc9, //0x000000e9 movq %r9, %rcx
0x90, 0x90, 0x90, 0x90, //0x000000ec .p2align 4, 0x90
//0x000000f0 LBB0_6
0xc4, 0xc1, 0x7a, 0x6f, 0x65, 0x00, //0x000000f0 vmovdqu (%r13), %xmm4
0xc5, 0xd9, 0x74, 0xe8, //0x000000f6 vpcmpeqb %xmm0, %xmm4, %xmm5
0xc5, 0xd9, 0x74, 0xf1, //0x000000fa vpcmpeqb %xmm1, %xmm4, %xmm6
0xc5, 0xc9, 0xeb, 0xed, //0x000000fe vpor %xmm5, %xmm6, %xmm5
0xc5, 0xd9, 0xeb, 0xf2, //0x00000102 vpor %xmm2, %xmm4, %xmm6
0xc5, 0xc9, 0x74, 0xf3, //0x00000106 vpcmpeqb %xmm3, %xmm6, %xmm6
0xc5, 0xd1, 0xeb, 0xee, //0x0000010a vpor %xmm6, %xmm5, %xmm5
0xc4, 0xc1, 0x7a, 0x7f, 0x20, //0x0000010e vmovdqu %xmm4, (%r8)
0xc5, 0xf9, 0xd7, 0xd5, //0x00000113 vpmovmskb %xmm5, %edx
0x66, 0x85, 0xd2, //0x00000117 testw %dx, %dx
0x0f, 0x85, 0x30, 0x01, 0x00, 0x00, //0x0000011a jne LBB0_21
0x49, 0x83, 0xc5, 0x10, //0x00000120 addq $16, %r13
0x49, 0x83, 0xc0, 0x10, //0x00000124 addq $16, %r8
0x4c, 0x8d, 0x61, 0xf0, //0x00000128 leaq $-16(%rcx), %r12
0x48, 0x83, 0xf8, 0x1f, //0x0000012c cmpq $31, %rax
0x0f, 0x9f, 0xc3, //0x00000130 setg %bl
0x48, 0x83, 0xf8, 0x20, //0x00000133 cmpq $32, %rax
0x48, 0x8d, 0x40, 0xf0, //0x00000137 leaq $-16(%rax), %rax
0x0f, 0x8c, 0x0f, 0x00, 0x00, 0x00, //0x0000013b jl LBB0_9
0x48, 0x83, 0xf9, 0x1f, //0x00000141 cmpq $31, %rcx
0x4c, 0x89, 0xe1, //0x00000145 movq %r12, %rcx
0x0f, 0x8f, 0xa2, 0xff, 0xff, 0xff, //0x00000148 jg LBB0_6
0x90, 0x90, //0x0000014e .p2align 4, 0x90
//0x00000150 LBB0_9
0x84, 0xdb, //0x00000150 testb %bl, %bl
0x0f, 0x84, 0x68, 0x00, 0x00, 0x00, //0x00000152 je LBB0_13
0x4c, 0x89, 0xf2, //0x00000158 movq %r14, %rdx
0xc4, 0xc1, 0x7a, 0x6f, 0x65, 0x00, //0x0000015b vmovdqu (%r13), %xmm4
0xc5, 0xd9, 0x74, 0xe8, //0x00000161 vpcmpeqb %xmm0, %xmm4, %xmm5
0xc5, 0xd9, 0x74, 0xf1, //0x00000165 vpcmpeqb %xmm1, %xmm4, %xmm6
0xc5, 0xc9, 0xeb, 0xed, //0x00000169 vpor %xmm5, %xmm6, %xmm5
0xc5, 0xd9, 0xeb, 0xf2, //0x0000016d vpor %xmm2, %xmm4, %xmm6
0xc5, 0xc9, 0x74, 0xf3, //0x00000171 vpcmpeqb %xmm3, %xmm6, %xmm6
0xc5, 0xd1, 0xeb, 0xee, //0x00000175 vpor %xmm6, %xmm5, %xmm5
0xc5, 0xf9, 0xd7, 0xc5, //0x00000179 vpmovmskb %xmm5, %eax
0x0d, 0x00, 0x00, 0x01, 0x00, //0x0000017d orl $65536, %eax
0x44, 0x0f, 0xbc, 0xf0, //0x00000182 bsfl %eax, %r14d
0xc4, 0xe1, 0xf9, 0x7e, 0xe0, //0x00000186 vmovq %xmm4, %rax
0x4d, 0x39, 0xf4, //0x0000018b cmpq %r14, %r12
0x0f, 0x8d, 0xd7, 0x00, 0x00, 0x00, //0x0000018e jge LBB0_22
0x49, 0x83, 0xfc, 0x08, //0x00000194 cmpq $8, %r12
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x00000198 jb LBB0_25
0x49, 0x89, 0x00, //0x0000019e movq %rax, (%r8)
0x4d, 0x8d, 0x75, 0x08, //0x000001a1 leaq $8(%r13), %r14
0x49, 0x83, 0xc0, 0x08, //0x000001a5 addq $8, %r8
0x49, 0x8d, 0x44, 0x24, 0xf8, //0x000001a9 leaq $-8(%r12), %rax
0x48, 0x83, 0xf8, 0x04, //0x000001ae cmpq $4, %rax
0x0f, 0x8d, 0xff, 0x00, 0x00, 0x00, //0x000001b2 jge LBB0_26
0xe9, 0x0c, 0x01, 0x00, 0x00, //0x000001b8 jmp LBB0_27
0x90, 0x90, 0x90, //0x000001bd .p2align 4, 0x90
//0x000001c0 LBB0_13
0x4d, 0x85, 0xe4, //0x000001c0 testq %r12, %r12
0x0f, 0x8e, 0x67, 0x00, 0x00, 0x00, //0x000001c3 jle LBB0_20
0x48, 0x85, 0xc0, //0x000001c9 testq %rax, %rax
0x0f, 0x8e, 0x5e, 0x00, 0x00, 0x00, //0x000001cc jle LBB0_20
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000001d2 .p2align 4, 0x90
//0x000001e0 LBB0_15
0x41, 0x0f, 0xb6, 0x4d, 0x00, //0x000001e0 movzbl (%r13), %ecx
0x48, 0x83, 0xf9, 0x3e, //0x000001e5 cmpq $62, %rcx
0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x000001e9 ja LBB0_17
0x49, 0x0f, 0xa3, 0xce, //0x000001ef btq %rcx, %r14
0x0f, 0x82, 0x9a, 0x00, 0x00, 0x00, //0x000001f3 jb LBB0_24
//0x000001f9 LBB0_17
0x80, 0xf9, 0xe2, //0x000001f9 cmpb $-30, %cl
0x0f, 0x84, 0x91, 0x00, 0x00, 0x00, //0x000001fc je LBB0_24
0x49, 0xff, 0xc5, //0x00000202 incq %r13
0x41, 0x88, 0x08, //0x00000205 movb %cl, (%r8)
0x48, 0x83, 0xf8, 0x02, //0x00000208 cmpq $2, %rax
0x48, 0x8d, 0x40, 0xff, //0x0000020c leaq $-1(%rax), %rax
0x0f, 0x8c, 0x1a, 0x00, 0x00, 0x00, //0x00000210 jl LBB0_20
0x49, 0xff, 0xc0, //0x00000216 incq %r8
0x49, 0x83, 0xfc, 0x01, //0x00000219 cmpq $1, %r12
0x4d, 0x8d, 0x64, 0x24, 0xff, //0x0000021d leaq $-1(%r12), %r12
0x0f, 0x8f, 0xb8, 0xff, 0xff, 0xff, //0x00000222 jg LBB0_15
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000228 .p2align 4, 0x90
//0x00000230 LBB0_20
0x4d, 0x29, 0xfd, //0x00000230 subq %r15, %r13
0x48, 0xf7, 0xd8, //0x00000233 negq %rax
0x4d, 0x19, 0xe4, //0x00000236 sbbq %r12, %r12
0x4d, 0x31, 0xec, //0x00000239 xorq %r13, %r12
0x4d, 0x85, 0xe4, //0x0000023c testq %r12, %r12
0x0f, 0x89, 0x5b, 0x01, 0x00, 0x00, //0x0000023f jns LBB0_37
0xe9, 0x72, 0x02, 0x00, 0x00, //0x00000245 jmp LBB0_57
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000024a .p2align 4, 0x90
//0x00000250 LBB0_21
0x0f, 0xb7, 0xc2, //0x00000250 movzwl %dx, %eax
0x4d, 0x29, 0xfd, //0x00000253 subq %r15, %r13
0x44, 0x0f, 0xbc, 0xe0, //0x00000256 bsfl %eax, %r12d
0x4d, 0x01, 0xec, //0x0000025a addq %r13, %r12
0x4d, 0x85, 0xe4, //0x0000025d testq %r12, %r12
0x0f, 0x89, 0x3a, 0x01, 0x00, 0x00, //0x00000260 jns LBB0_37
0xe9, 0x51, 0x02, 0x00, 0x00, //0x00000266 jmp LBB0_57
//0x0000026b LBB0_22
0x41, 0x83, 0xfe, 0x08, //0x0000026b cmpl $8, %r14d
0x0f, 0x82, 0xa9, 0x00, 0x00, 0x00, //0x0000026f jb LBB0_31
0x49, 0x89, 0x00, //0x00000275 movq %rax, (%r8)
0x4d, 0x8d, 0x65, 0x08, //0x00000278 leaq $8(%r13), %r12
0x49, 0x83, 0xc0, 0x08, //0x0000027c addq $8, %r8
0x49, 0x8d, 0x46, 0xf8, //0x00000280 leaq $-8(%r14), %rax
0x48, 0x83, 0xf8, 0x04, //0x00000284 cmpq $4, %rax
0x0f, 0x8d, 0xa0, 0x00, 0x00, 0x00, //0x00000288 jge LBB0_32
0xe9, 0xae, 0x00, 0x00, 0x00, //0x0000028e jmp LBB0_33
//0x00000293 LBB0_24
0x4d, 0x29, 0xfd, //0x00000293 subq %r15, %r13
0x4d, 0x89, 0xec, //0x00000296 movq %r13, %r12
0x4d, 0x85, 0xe4, //0x00000299 testq %r12, %r12
0x0f, 0x89, 0xfe, 0x00, 0x00, 0x00, //0x0000029c jns LBB0_37
0xe9, 0x15, 0x02, 0x00, 0x00, //0x000002a2 jmp LBB0_57
//0x000002a7 LBB0_25
0x4d, 0x89, 0xee, //0x000002a7 movq %r13, %r14
0x4c, 0x89, 0xe0, //0x000002aa movq %r12, %rax
0x48, 0x83, 0xf8, 0x04, //0x000002ad cmpq $4, %rax
0x0f, 0x8c, 0x12, 0x00, 0x00, 0x00, //0x000002b1 jl LBB0_27
//0x000002b7 LBB0_26
0x41, 0x8b, 0x0e, //0x000002b7 movl (%r14), %ecx
0x41, 0x89, 0x08, //0x000002ba movl %ecx, (%r8)
0x49, 0x83, 0xc6, 0x04, //0x000002bd addq $4, %r14
0x49, 0x83, 0xc0, 0x04, //0x000002c1 addq $4, %r8
0x48, 0x83, 0xc0, 0xfc, //0x000002c5 addq $-4, %rax
//0x000002c9 LBB0_27
0x48, 0x83, 0xf8, 0x02, //0x000002c9 cmpq $2, %rax
0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x000002cd jb LBB0_28
0x41, 0x0f, 0xb7, 0x0e, //0x000002d3 movzwl (%r14), %ecx
0x66, 0x41, 0x89, 0x08, //0x000002d7 movw %cx, (%r8)
0x49, 0x83, 0xc6, 0x02, //0x000002db addq $2, %r14
0x49, 0x83, 0xc0, 0x02, //0x000002df addq $2, %r8
0x48, 0x83, 0xc0, 0xfe, //0x000002e3 addq $-2, %rax
0x48, 0x85, 0xc0, //0x000002e7 testq %rax, %rax
0x0f, 0x85, 0x0e, 0x00, 0x00, 0x00, //0x000002ea jne LBB0_29
0xe9, 0x0f, 0x00, 0x00, 0x00, //0x000002f0 jmp LBB0_30
//0x000002f5 LBB0_28
0x48, 0x85, 0xc0, //0x000002f5 testq %rax, %rax
0x0f, 0x84, 0x06, 0x00, 0x00, 0x00, //0x000002f8 je LBB0_30
//0x000002fe LBB0_29
0x41, 0x8a, 0x06, //0x000002fe movb (%r14), %al
0x41, 0x88, 0x00, //0x00000301 movb %al, (%r8)
//0x00000304 LBB0_30
0x4d, 0x29, 0xfc, //0x00000304 subq %r15, %r12
0x4d, 0x01, 0xec, //0x00000307 addq %r13, %r12
0x49, 0xf7, 0xd4, //0x0000030a notq %r12
0x49, 0x89, 0xd6, //0x0000030d movq %rdx, %r14
0x4d, 0x85, 0xe4, //0x00000310 testq %r12, %r12
0x0f, 0x89, 0x87, 0x00, 0x00, 0x00, //0x00000313 jns LBB0_37
0xe9, 0x9e, 0x01, 0x00, 0x00, //0x00000319 jmp LBB0_57
//0x0000031e LBB0_31
0x4d, 0x89, 0xec, //0x0000031e movq %r13, %r12
0x4c, 0x89, 0xf0, //0x00000321 movq %r14, %rax
0x48, 0x83, 0xf8, 0x04, //0x00000324 cmpq $4, %rax
0x0f, 0x8c, 0x13, 0x00, 0x00, 0x00, //0x00000328 jl LBB0_33
//0x0000032e LBB0_32
0x41, 0x8b, 0x0c, 0x24, //0x0000032e movl (%r12), %ecx
0x41, 0x89, 0x08, //0x00000332 movl %ecx, (%r8)
0x49, 0x83, 0xc4, 0x04, //0x00000335 addq $4, %r12
0x49, 0x83, 0xc0, 0x04, //0x00000339 addq $4, %r8
0x48, 0x83, 0xc0, 0xfc, //0x0000033d addq $-4, %rax
//0x00000341 LBB0_33
0x48, 0x83, 0xf8, 0x02, //0x00000341 cmpq $2, %rax
0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00000345 jb LBB0_34
0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x0000034b movzwl (%r12), %ecx
0x66, 0x41, 0x89, 0x08, //0x00000350 movw %cx, (%r8)
0x49, 0x83, 0xc4, 0x02, //0x00000354 addq $2, %r12
0x49, 0x83, 0xc0, 0x02, //0x00000358 addq $2, %r8
0x48, 0x83, 0xc0, 0xfe, //0x0000035c addq $-2, %rax
0x48, 0x85, 0xc0, //0x00000360 testq %rax, %rax
0x0f, 0x85, 0x0e, 0x00, 0x00, 0x00, //0x00000363 jne LBB0_35
0xe9, 0x10, 0x00, 0x00, 0x00, //0x00000369 jmp LBB0_36
//0x0000036e LBB0_34
0x48, 0x85, 0xc0, //0x0000036e testq %rax, %rax
0x0f, 0x84, 0x07, 0x00, 0x00, 0x00, //0x00000371 je LBB0_36
//0x00000377 LBB0_35
0x41, 0x8a, 0x04, 0x24, //0x00000377 movb (%r12), %al
0x41, 0x88, 0x00, //0x0000037b movb %al, (%r8)
//0x0000037e LBB0_36
0x4d, 0x29, 0xfd, //0x0000037e subq %r15, %r13
0x4d, 0x01, 0xf5, //0x00000381 addq %r14, %r13
0x4d, 0x89, 0xec, //0x00000384 movq %r13, %r12
0x49, 0x89, 0xd6, //0x00000387 movq %rdx, %r14
0x4d, 0x85, 0xe4, //0x0000038a testq %r12, %r12
0x0f, 0x88, 0x29, 0x01, 0x00, 0x00, //0x0000038d js LBB0_57
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000393 .p2align 4, 0x90
//0x000003a0 LBB0_37
0x4d, 0x01, 0xe7, //0x000003a0 addq %r12, %r15
0x4d, 0x01, 0xe2, //0x000003a3 addq %r12, %r10
0x4c, 0x29, 0xe6, //0x000003a6 subq %r12, %rsi
0x0f, 0x8e, 0x2d, 0x01, 0x00, 0x00, //0x000003a9 jle LBB0_58
0x4d, 0x29, 0xe1, //0x000003af subq %r12, %r9
0x41, 0x8a, 0x0f, //0x000003b2 movb (%r15), %cl
0x80, 0xf9, 0xe2, //0x000003b5 cmpb $-30, %cl
0x0f, 0x84, 0xb1, 0x00, 0x00, 0x00, //0x000003b8 je LBB0_51
0x4c, 0x89, 0xf8, //0x000003be movq %r15, %rax
//0x000003c1 LBB0_40
0x0f, 0xb6, 0xd1, //0x000003c1 movzbl %cl, %edx
0x48, 0xc1, 0xe2, 0x04, //0x000003c4 shlq $4, %rdx
0x4a, 0x8b, 0x3c, 0x1a, //0x000003c8 movq (%rdx,%r11), %rdi
0x48, 0x63, 0xdf, //0x000003cc movslq %edi, %rbx
0x49, 0x29, 0xd9, //0x000003cf subq %rbx, %r9
0x0f, 0x8c, 0x1b, 0x01, 0x00, 0x00, //0x000003d2 jl LBB0_60
0x48, 0xc1, 0xe7, 0x20, //0x000003d8 shlq $32, %rdi
0x4e, 0x8d, 0x7c, 0x1a, 0x08, //0x000003dc leaq $8(%rdx,%r11), %r15
0x48, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, //0x000003e1 movabsq $12884901889, %rcx
0x48, 0x39, 0xcf, //0x000003eb cmpq %rcx, %rdi
0x0f, 0x8c, 0x2c, 0x00, 0x00, 0x00, //0x000003ee jl LBB0_43
0x41, 0x8b, 0x0f, //0x000003f4 movl (%r15), %ecx
0x41, 0x89, 0x0a, //0x000003f7 movl %ecx, (%r10)
0x4e, 0x8d, 0x7c, 0x1a, 0x0c, //0x000003fa leaq $12(%rdx,%r11), %r15
0x4d, 0x8d, 0x42, 0x04, //0x000003ff leaq $4(%r10), %r8
0x48, 0x8d, 0x7b, 0xfc, //0x00000403 leaq $-4(%rbx), %rdi
0x48, 0x83, 0xff, 0x02, //0x00000407 cmpq $2, %rdi
0x0f, 0x83, 0x1f, 0x00, 0x00, 0x00, //0x0000040b jae LBB0_44
0xe9, 0x2e, 0x00, 0x00, 0x00, //0x00000411 jmp LBB0_45
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000416 .p2align 4, 0x90
//0x00000420 LBB0_43
0x4d, 0x89, 0xd0, //0x00000420 movq %r10, %r8
0x48, 0x89, 0xdf, //0x00000423 movq %rbx, %rdi
0x48, 0x83, 0xff, 0x02, //0x00000426 cmpq $2, %rdi
0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x0000042a jb LBB0_45
//0x00000430 LBB0_44
0x41, 0x0f, 0xb7, 0x17, //0x00000430 movzwl (%r15), %edx
0x66, 0x41, 0x89, 0x10, //0x00000434 movw %dx, (%r8)
0x49, 0x83, 0xc7, 0x02, //0x00000438 addq $2, %r15
0x49, 0x83, 0xc0, 0x02, //0x0000043c addq $2, %r8
0x48, 0x83, 0xc7, 0xfe, //0x00000440 addq $-2, %rdi
//0x00000444 LBB0_45
0x48, 0x85, 0xff, //0x00000444 testq %rdi, %rdi
0x0f, 0x84, 0x06, 0x00, 0x00, 0x00, //0x00000447 je LBB0_47
0x41, 0x8a, 0x0f, //0x0000044d movb (%r15), %cl
0x41, 0x88, 0x08, //0x00000450 movb %cl, (%r8)
//0x00000453 LBB0_47
0x49, 0x01, 0xda, //0x00000453 addq %rbx, %r10
//0x00000456 LBB0_48
0x48, 0xff, 0xc0, //0x00000456 incq %rax
0x49, 0x89, 0xc7, //0x00000459 movq %rax, %r15
0x48, 0x83, 0xfe, 0x01, //0x0000045c cmpq $1, %rsi
0x48, 0x8d, 0x76, 0xff, //0x00000460 leaq $-1(%rsi), %rsi
0x0f, 0x8f, 0x46, 0xfc, 0xff, 0xff, //0x00000464 jg LBB0_2
0xe9, 0x70, 0x00, 0x00, 0x00, //0x0000046a jmp LBB0_59
//0x0000046f LBB0_51
0x48, 0x83, 0xfe, 0x03, //0x0000046f cmpq $3, %rsi
0x0f, 0x8c, 0x28, 0x00, 0x00, 0x00, //0x00000473 jl LBB0_55
0x41, 0x80, 0x7f, 0x01, 0x80, //0x00000479 cmpb $-128, $1(%r15)
0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000047e jne LBB0_55
0x41, 0x8a, 0x4f, 0x02, //0x00000484 movb $2(%r15), %cl
0x89, 0xc8, //0x00000488 movl %ecx, %eax
0x24, 0xfe, //0x0000048a andb $-2, %al
0x3c, 0xa8, //0x0000048c cmpb $-88, %al
0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x0000048e jne LBB0_55
0x49, 0x8d, 0x47, 0x02, //0x00000494 leaq $2(%r15), %rax
0x48, 0x83, 0xc6, 0xfe, //0x00000498 addq $-2, %rsi
0xe9, 0x20, 0xff, 0xff, 0xff, //0x0000049c jmp LBB0_40
//0x000004a1 LBB0_55
0x4d, 0x85, 0xc9, //0x000004a1 testq %r9, %r9
0x0f, 0x8e, 0x54, 0x00, 0x00, 0x00, //0x000004a4 jle LBB0_61
0x41, 0xc6, 0x02, 0xe2, //0x000004aa movb $-30, (%r10)
0x49, 0xff, 0xc2, //0x000004ae incq %r10
0x49, 0xff, 0xc9, //0x000004b1 decq %r9
0x4c, 0x89, 0xf8, //0x000004b4 movq %r15, %rax
0xe9, 0x9a, 0xff, 0xff, 0xff, //0x000004b7 jmp LBB0_48
//0x000004bc LBB0_57
0x4c, 0x2b, 0x55, 0xc8, //0x000004bc subq $-56(%rbp), %r10
0x49, 0xf7, 0xd4, //0x000004c0 notq %r12
0x4d, 0x01, 0xe2, //0x000004c3 addq %r12, %r10
0x48, 0x8b, 0x45, 0xc0, //0x000004c6 movq $-64(%rbp), %rax
0x4c, 0x89, 0x10, //0x000004ca movq %r10, (%rax)
0x4c, 0x2b, 0x7d, 0xd0, //0x000004cd subq $-48(%rbp), %r15
0x4d, 0x01, 0xe7, //0x000004d1 addq %r12, %r15
0x49, 0xf7, 0xd7, //0x000004d4 notq %r15
0xe9, 0x29, 0x00, 0x00, 0x00, //0x000004d7 jmp LBB0_62
//0x000004dc LBB0_58
0x4c, 0x89, 0xf8, //0x000004dc movq %r15, %rax
//0x000004df LBB0_59
0x4c, 0x2b, 0x55, 0xc8, //0x000004df subq $-56(%rbp), %r10
0x48, 0x8b, 0x4d, 0xc0, //0x000004e3 movq $-64(%rbp), %rcx
0x4c, 0x89, 0x11, //0x000004e7 movq %r10, (%rcx)
0x48, 0x2b, 0x45, 0xd0, //0x000004ea subq $-48(%rbp), %rax
0xe9, 0x15, 0x00, 0x00, 0x00, //0x000004ee jmp LBB0_63
//0x000004f3 LBB0_60
0x4c, 0x2b, 0x55, 0xc8, //0x000004f3 subq $-56(%rbp), %r10
0x48, 0x8b, 0x45, 0xc0, //0x000004f7 movq $-64(%rbp), %rax
0x4c, 0x89, 0x10, //0x000004fb movq %r10, (%rax)
//0x000004fe LBB0_61
0x49, 0xf7, 0xd7, //0x000004fe notq %r15
0x4c, 0x03, 0x7d, 0xd0, //0x00000501 addq $-48(%rbp), %r15
//0x00000505 LBB0_62
0x4c, 0x89, 0xf8, //0x00000505 movq %r15, %rax
//0x00000508 LBB0_63
0x48, 0x83, 0xc4, 0x18, //0x00000508 addq $24, %rsp
0x5b, //0x0000050c popq %rbx
0x41, 0x5c, //0x0000050d popq %r12
0x41, 0x5d, //0x0000050f popq %r13
0x41, 0x5e, //0x00000511 popq %r14
0x41, 0x5f, //0x00000513 popq %r15
0x5d, //0x00000515 popq %rbp
0xc3, //0x00000516 retq
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000517 .p2align 4, 0x00
//0x00000520 __HtmlQuoteTab
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000520 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000530 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000540 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000550 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000560 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000570 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000580 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000590 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000600 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000610 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000620 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000630 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000640 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000650 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000660 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000670 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000680 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000690 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000700 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000710 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000720 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000730 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000740 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000750 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000760 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000770 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000780 .quad 6
0x5c, 0x75, 0x30, 0x30, 0x32, 0x36, 0x00, 0x00, //0x00000788 QUAD $0x000036323030755c // .asciz 8, '\\u0026\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000790 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000800 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000810 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000820 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000830 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000840 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000850 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000860 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000870 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000880 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000890 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008e0 .quad 6
0x5c, 0x75, 0x30, 0x30, 0x33, 0x63, 0x00, 0x00, //0x000008e8 QUAD $0x000063333030755c // .asciz 8, '\\u003c\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000900 .quad 6
0x5c, 0x75, 0x30, 0x30, 0x33, 0x65, 0x00, 0x00, //0x00000908 QUAD $0x000065333030755c // .asciz 8, '\\u003e\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000910 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000920 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000930 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000940 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000950 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000960 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000970 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000980 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000990 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000aa0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ab0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ac0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ad0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ae0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000af0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ba0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000be0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bf0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ca0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ce0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cf0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000da0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000db0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000dc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000dd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000de0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000df0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ea0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000eb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ec0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ed0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ee0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ef0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fa0 .quad 6
0x5c, 0x75, 0x32, 0x30, 0x32, 0x38, 0x00, 0x00, //0x00000fa8 QUAD $0x000038323032755c // .asciz 8, '\\u2028\x00\x00'
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fb0 .quad 6
0x5c, 0x75, 0x32, 0x30, 0x32, 0x39, 0x00, 0x00, //0x00000fb8 QUAD $0x000039323032755c // .asciz 8, '\\u2029\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fe0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ff0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001000 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001010 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001020 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001030 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001040 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001050 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001060 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001070 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001080 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001090 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001100 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001110 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001120 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001130 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001140 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001150 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001160 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001170 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001180 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001190 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001200 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001210 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001220 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001230 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001240 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001250 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001260 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001270 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001280 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001290 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001300 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001310 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001320 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001330 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001340 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001350 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001360 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001370 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001380 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001390 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001400 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001410 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001420 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001430 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001440 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001450 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001460 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001470 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001480 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001490 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001500 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001510 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
}

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_i64toa func(out unsafe.Pointer, val int64) (ret int)
var S_i64toa uintptr
//go:nosplit
func i64toa(out *byte, val int64) (ret int) {
return F_i64toa(rt.NoEscape(unsafe.Pointer(out)), val)
}

View File

@ -0,0 +1,47 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__i64toa = 64
)
const (
_stack__i64toa = 8
)
const (
_size__i64toa = 2272
)
var (
_pcsp__i64toa = [][2]uint32{
{1, 0},
{170, 8},
{171, 0},
{505, 8},
{506, 0},
{637, 8},
{638, 0},
{1101, 8},
{1102, 0},
{1238, 8},
{1239, 0},
{1540, 8},
{1541, 0},
{1901, 8},
{1902, 0},
{2268, 8},
{2270, 0},
}
)
var _cfunc_i64toa = []loader.CFunc{
{"_i64toa_entry", 0, _entry__i64toa, 0, nil},
{"_i64toa", _entry__i64toa, _size__i64toa, _stack__i64toa, _pcsp__i64toa},
}

View File

@ -0,0 +1,639 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_i64toa = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, // .quad 3518437209
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, //0x00000008 .quad 3518437209
//0x00000010 LCPI0_3
0x0a, 0x00, //0x00000010 .word 10
0x0a, 0x00, //0x00000012 .word 10
0x0a, 0x00, //0x00000014 .word 10
0x0a, 0x00, //0x00000016 .word 10
0x0a, 0x00, //0x00000018 .word 10
0x0a, 0x00, //0x0000001a .word 10
0x0a, 0x00, //0x0000001c .word 10
0x0a, 0x00, //0x0000001e .word 10
//0x00000020 LCPI0_4
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000020 QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
//0x00000030 .p2align 3, 0x00
//0x00000030 LCPI0_1
0xc5, 0x20, 0x7b, 0x14, 0x34, 0x33, 0x00, 0x80, //0x00000030 .quad -9223315738079846203
//0x00000038 LCPI0_2
0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, //0x00000038 .quad -9223336852348469120
//0x00000040 .p2align 4, 0x90
//0x00000040 _i64toa
0x55, //0x00000040 pushq %rbp
0x48, 0x89, 0xe5, //0x00000041 movq %rsp, %rbp
0x48, 0x85, 0xf6, //0x00000044 testq %rsi, %rsi
0x0f, 0x88, 0xaf, 0x00, 0x00, 0x00, //0x00000047 js LBB0_25
0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x0000004d cmpq $9999, %rsi
0x0f, 0x87, 0xf8, 0x00, 0x00, 0x00, //0x00000054 ja LBB0_9
0x0f, 0xb7, 0xc6, //0x0000005a movzwl %si, %eax
0xc1, 0xe8, 0x02, //0x0000005d shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000060 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000066 shrl $17, %eax
0x48, 0x8d, 0x14, 0x00, //0x00000069 leaq (%rax,%rax), %rdx
0x6b, 0xc0, 0x64, //0x0000006d imull $100, %eax, %eax
0x89, 0xf1, //0x00000070 movl %esi, %ecx
0x29, 0xc1, //0x00000072 subl %eax, %ecx
0x0f, 0xb7, 0xc1, //0x00000074 movzwl %cx, %eax
0x48, 0x01, 0xc0, //0x00000077 addq %rax, %rax
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x0000007a cmpl $1000, %esi
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000080 jb LBB0_4
0x48, 0x8d, 0x0d, 0x93, 0x08, 0x00, 0x00, //0x00000086 leaq $2195(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x0c, 0x0a, //0x0000008d movb (%rdx,%rcx), %cl
0x88, 0x0f, //0x00000090 movb %cl, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000092 movl $1, %ecx
0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000097 jmp LBB0_5
//0x0000009c LBB0_4
0x31, 0xc9, //0x0000009c xorl %ecx, %ecx
0x83, 0xfe, 0x64, //0x0000009e cmpl $100, %esi
0x0f, 0x82, 0x45, 0x00, 0x00, 0x00, //0x000000a1 jb LBB0_6
//0x000000a7 LBB0_5
0x0f, 0xb7, 0xd2, //0x000000a7 movzwl %dx, %edx
0x48, 0x83, 0xca, 0x01, //0x000000aa orq $1, %rdx
0x48, 0x8d, 0x35, 0x6b, 0x08, 0x00, 0x00, //0x000000ae leaq $2155(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x14, 0x32, //0x000000b5 movb (%rdx,%rsi), %dl
0x89, 0xce, //0x000000b8 movl %ecx, %esi
0xff, 0xc1, //0x000000ba incl %ecx
0x88, 0x14, 0x37, //0x000000bc movb %dl, (%rdi,%rsi)
//0x000000bf LBB0_7
0x48, 0x8d, 0x15, 0x5a, 0x08, 0x00, 0x00, //0x000000bf leaq $2138(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x14, 0x10, //0x000000c6 movb (%rax,%rdx), %dl
0x89, 0xce, //0x000000c9 movl %ecx, %esi
0xff, 0xc1, //0x000000cb incl %ecx
0x88, 0x14, 0x37, //0x000000cd movb %dl, (%rdi,%rsi)
//0x000000d0 LBB0_8
0x0f, 0xb7, 0xc0, //0x000000d0 movzwl %ax, %eax
0x48, 0x83, 0xc8, 0x01, //0x000000d3 orq $1, %rax
0x48, 0x8d, 0x15, 0x42, 0x08, 0x00, 0x00, //0x000000d7 leaq $2114(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x04, 0x10, //0x000000de movb (%rax,%rdx), %al
0x89, 0xca, //0x000000e1 movl %ecx, %edx
0xff, 0xc1, //0x000000e3 incl %ecx
0x88, 0x04, 0x17, //0x000000e5 movb %al, (%rdi,%rdx)
0x89, 0xc8, //0x000000e8 movl %ecx, %eax
0x5d, //0x000000ea popq %rbp
0xc3, //0x000000eb retq
//0x000000ec LBB0_6
0x31, 0xc9, //0x000000ec xorl %ecx, %ecx
0x83, 0xfe, 0x0a, //0x000000ee cmpl $10, %esi
0x0f, 0x83, 0xc8, 0xff, 0xff, 0xff, //0x000000f1 jae LBB0_7
0xe9, 0xd4, 0xff, 0xff, 0xff, //0x000000f7 jmp LBB0_8
//0x000000fc LBB0_25
0xc6, 0x07, 0x2d, //0x000000fc movb $45, (%rdi)
0x48, 0xf7, 0xde, //0x000000ff negq %rsi
0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x00000102 cmpq $9999, %rsi
0x0f, 0x87, 0xd3, 0x01, 0x00, 0x00, //0x00000109 ja LBB0_33
0x0f, 0xb7, 0xc6, //0x0000010f movzwl %si, %eax
0xc1, 0xe8, 0x02, //0x00000112 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000115 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x0000011b shrl $17, %eax
0x48, 0x8d, 0x14, 0x00, //0x0000011e leaq (%rax,%rax), %rdx
0x6b, 0xc0, 0x64, //0x00000122 imull $100, %eax, %eax
0x89, 0xf1, //0x00000125 movl %esi, %ecx
0x29, 0xc1, //0x00000127 subl %eax, %ecx
0x0f, 0xb7, 0xc1, //0x00000129 movzwl %cx, %eax
0x48, 0x01, 0xc0, //0x0000012c addq %rax, %rax
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x0000012f cmpl $1000, %esi
0x0f, 0x82, 0xab, 0x00, 0x00, 0x00, //0x00000135 jb LBB0_28
0x48, 0x8d, 0x0d, 0xde, 0x07, 0x00, 0x00, //0x0000013b leaq $2014(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x0c, 0x0a, //0x00000142 movb (%rdx,%rcx), %cl
0x88, 0x4f, 0x01, //0x00000145 movb %cl, $1(%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000148 movl $1, %ecx
0xe9, 0x9f, 0x00, 0x00, 0x00, //0x0000014d jmp LBB0_29
//0x00000152 LBB0_9
0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x00000152 cmpq $99999999, %rsi
0x0f, 0x87, 0x18, 0x02, 0x00, 0x00, //0x00000159 ja LBB0_17
0x89, 0xf0, //0x0000015f movl %esi, %eax
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x00000161 movl $3518437209, %edx
0x48, 0x0f, 0xaf, 0xd0, //0x00000166 imulq %rax, %rdx
0x48, 0xc1, 0xea, 0x2d, //0x0000016a shrq $45, %rdx
0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x0000016e imull $10000, %edx, %r8d
0x89, 0xf1, //0x00000175 movl %esi, %ecx
0x44, 0x29, 0xc1, //0x00000177 subl %r8d, %ecx
0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000017a imulq $1125899907, %rax, %r10
0x49, 0xc1, 0xea, 0x31, //0x00000181 shrq $49, %r10
0x41, 0x83, 0xe2, 0xfe, //0x00000185 andl $-2, %r10d
0x0f, 0xb7, 0xc2, //0x00000189 movzwl %dx, %eax
0xc1, 0xe8, 0x02, //0x0000018c shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000018f imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000195 shrl $17, %eax
0x6b, 0xc0, 0x64, //0x00000198 imull $100, %eax, %eax
0x29, 0xc2, //0x0000019b subl %eax, %edx
0x44, 0x0f, 0xb7, 0xca, //0x0000019d movzwl %dx, %r9d
0x4d, 0x01, 0xc9, //0x000001a1 addq %r9, %r9
0x0f, 0xb7, 0xc1, //0x000001a4 movzwl %cx, %eax
0xc1, 0xe8, 0x02, //0x000001a7 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000001aa imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x000001b0 shrl $17, %eax
0x4c, 0x8d, 0x04, 0x00, //0x000001b3 leaq (%rax,%rax), %r8
0x6b, 0xc0, 0x64, //0x000001b7 imull $100, %eax, %eax
0x29, 0xc1, //0x000001ba subl %eax, %ecx
0x44, 0x0f, 0xb7, 0xd9, //0x000001bc movzwl %cx, %r11d
0x4d, 0x01, 0xdb, //0x000001c0 addq %r11, %r11
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x000001c3 cmpl $10000000, %esi
0x0f, 0x82, 0x6c, 0x00, 0x00, 0x00, //0x000001c9 jb LBB0_12
0x48, 0x8d, 0x05, 0x4a, 0x07, 0x00, 0x00, //0x000001cf leaq $1866(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x02, //0x000001d6 movb (%r10,%rax), %al
0x88, 0x07, //0x000001da movb %al, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x000001dc movl $1, %ecx
0xe9, 0x63, 0x00, 0x00, 0x00, //0x000001e1 jmp LBB0_13
//0x000001e6 LBB0_28
0x31, 0xc9, //0x000001e6 xorl %ecx, %ecx
0x83, 0xfe, 0x64, //0x000001e8 cmpl $100, %esi
0x0f, 0x82, 0xce, 0x00, 0x00, 0x00, //0x000001eb jb LBB0_30
//0x000001f1 LBB0_29
0x0f, 0xb7, 0xd2, //0x000001f1 movzwl %dx, %edx
0x48, 0x83, 0xca, 0x01, //0x000001f4 orq $1, %rdx
0x48, 0x8d, 0x35, 0x21, 0x07, 0x00, 0x00, //0x000001f8 leaq $1825(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x14, 0x32, //0x000001ff movb (%rdx,%rsi), %dl
0x89, 0xce, //0x00000202 movl %ecx, %esi
0xff, 0xc1, //0x00000204 incl %ecx
0x88, 0x54, 0x37, 0x01, //0x00000206 movb %dl, $1(%rdi,%rsi)
//0x0000020a LBB0_31
0x48, 0x8d, 0x15, 0x0f, 0x07, 0x00, 0x00, //0x0000020a leaq $1807(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x14, 0x10, //0x00000211 movb (%rax,%rdx), %dl
0x89, 0xce, //0x00000214 movl %ecx, %esi
0xff, 0xc1, //0x00000216 incl %ecx
0x88, 0x54, 0x37, 0x01, //0x00000218 movb %dl, $1(%rdi,%rsi)
//0x0000021c LBB0_32
0x0f, 0xb7, 0xc0, //0x0000021c movzwl %ax, %eax
0x48, 0x83, 0xc8, 0x01, //0x0000021f orq $1, %rax
0x48, 0x8d, 0x15, 0xf6, 0x06, 0x00, 0x00, //0x00000223 leaq $1782(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x04, 0x10, //0x0000022a movb (%rax,%rdx), %al
0x89, 0xca, //0x0000022d movl %ecx, %edx
0xff, 0xc1, //0x0000022f incl %ecx
0x88, 0x44, 0x17, 0x01, //0x00000231 movb %al, $1(%rdi,%rdx)
0xff, 0xc1, //0x00000235 incl %ecx
0x89, 0xc8, //0x00000237 movl %ecx, %eax
0x5d, //0x00000239 popq %rbp
0xc3, //0x0000023a retq
//0x0000023b LBB0_12
0x31, 0xc9, //0x0000023b xorl %ecx, %ecx
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x0000023d cmpl $1000000, %esi
0x0f, 0x82, 0x86, 0x00, 0x00, 0x00, //0x00000243 jb LBB0_14
//0x00000249 LBB0_13
0x44, 0x89, 0xd0, //0x00000249 movl %r10d, %eax
0x48, 0x83, 0xc8, 0x01, //0x0000024c orq $1, %rax
0x48, 0x8d, 0x35, 0xc9, 0x06, 0x00, 0x00, //0x00000250 leaq $1737(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x00000257 movb (%rax,%rsi), %al
0x89, 0xce, //0x0000025a movl %ecx, %esi
0xff, 0xc1, //0x0000025c incl %ecx
0x88, 0x04, 0x37, //0x0000025e movb %al, (%rdi,%rsi)
//0x00000261 LBB0_15
0x48, 0x8d, 0x05, 0xb8, 0x06, 0x00, 0x00, //0x00000261 leaq $1720(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x01, //0x00000268 movb (%r9,%rax), %al
0x89, 0xce, //0x0000026c movl %ecx, %esi
0xff, 0xc1, //0x0000026e incl %ecx
0x88, 0x04, 0x37, //0x00000270 movb %al, (%rdi,%rsi)
//0x00000273 LBB0_16
0x41, 0x0f, 0xb7, 0xc1, //0x00000273 movzwl %r9w, %eax
0x48, 0x83, 0xc8, 0x01, //0x00000277 orq $1, %rax
0x48, 0x8d, 0x35, 0x9e, 0x06, 0x00, 0x00, //0x0000027b leaq $1694(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x00000282 movb (%rax,%rsi), %al
0x89, 0xca, //0x00000285 movl %ecx, %edx
0x88, 0x04, 0x3a, //0x00000287 movb %al, (%rdx,%rdi)
0x41, 0x8a, 0x04, 0x30, //0x0000028a movb (%r8,%rsi), %al
0x88, 0x44, 0x3a, 0x01, //0x0000028e movb %al, $1(%rdx,%rdi)
0x41, 0x0f, 0xb7, 0xc0, //0x00000292 movzwl %r8w, %eax
0x48, 0x83, 0xc8, 0x01, //0x00000296 orq $1, %rax
0x8a, 0x04, 0x30, //0x0000029a movb (%rax,%rsi), %al
0x88, 0x44, 0x3a, 0x02, //0x0000029d movb %al, $2(%rdx,%rdi)
0x41, 0x8a, 0x04, 0x33, //0x000002a1 movb (%r11,%rsi), %al
0x88, 0x44, 0x3a, 0x03, //0x000002a5 movb %al, $3(%rdx,%rdi)
0x41, 0x0f, 0xb7, 0xc3, //0x000002a9 movzwl %r11w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000002ad orq $1, %rax
0x8a, 0x04, 0x30, //0x000002b1 movb (%rax,%rsi), %al
0x83, 0xc1, 0x05, //0x000002b4 addl $5, %ecx
0x88, 0x44, 0x3a, 0x04, //0x000002b7 movb %al, $4(%rdx,%rdi)
0x89, 0xc8, //0x000002bb movl %ecx, %eax
0x5d, //0x000002bd popq %rbp
0xc3, //0x000002be retq
//0x000002bf LBB0_30
0x31, 0xc9, //0x000002bf xorl %ecx, %ecx
0x83, 0xfe, 0x0a, //0x000002c1 cmpl $10, %esi
0x0f, 0x83, 0x40, 0xff, 0xff, 0xff, //0x000002c4 jae LBB0_31
0xe9, 0x4d, 0xff, 0xff, 0xff, //0x000002ca jmp LBB0_32
//0x000002cf LBB0_14
0x31, 0xc9, //0x000002cf xorl %ecx, %ecx
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x000002d1 cmpl $100000, %esi
0x0f, 0x83, 0x84, 0xff, 0xff, 0xff, //0x000002d7 jae LBB0_15
0xe9, 0x91, 0xff, 0xff, 0xff, //0x000002dd jmp LBB0_16
//0x000002e2 LBB0_33
0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x000002e2 cmpq $99999999, %rsi
0x0f, 0x87, 0x3c, 0x02, 0x00, 0x00, //0x000002e9 ja LBB0_41
0x89, 0xf0, //0x000002ef movl %esi, %eax
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000002f1 movl $3518437209, %edx
0x48, 0x0f, 0xaf, 0xd0, //0x000002f6 imulq %rax, %rdx
0x48, 0xc1, 0xea, 0x2d, //0x000002fa shrq $45, %rdx
0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x000002fe imull $10000, %edx, %r8d
0x89, 0xf1, //0x00000305 movl %esi, %ecx
0x44, 0x29, 0xc1, //0x00000307 subl %r8d, %ecx
0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000030a imulq $1125899907, %rax, %r10
0x49, 0xc1, 0xea, 0x31, //0x00000311 shrq $49, %r10
0x41, 0x83, 0xe2, 0xfe, //0x00000315 andl $-2, %r10d
0x0f, 0xb7, 0xc2, //0x00000319 movzwl %dx, %eax
0xc1, 0xe8, 0x02, //0x0000031c shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000031f imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000325 shrl $17, %eax
0x6b, 0xc0, 0x64, //0x00000328 imull $100, %eax, %eax
0x29, 0xc2, //0x0000032b subl %eax, %edx
0x44, 0x0f, 0xb7, 0xca, //0x0000032d movzwl %dx, %r9d
0x4d, 0x01, 0xc9, //0x00000331 addq %r9, %r9
0x0f, 0xb7, 0xc1, //0x00000334 movzwl %cx, %eax
0xc1, 0xe8, 0x02, //0x00000337 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000033a imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000340 shrl $17, %eax
0x4c, 0x8d, 0x04, 0x00, //0x00000343 leaq (%rax,%rax), %r8
0x6b, 0xc0, 0x64, //0x00000347 imull $100, %eax, %eax
0x29, 0xc1, //0x0000034a subl %eax, %ecx
0x44, 0x0f, 0xb7, 0xd9, //0x0000034c movzwl %cx, %r11d
0x4d, 0x01, 0xdb, //0x00000350 addq %r11, %r11
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x00000353 cmpl $10000000, %esi
0x0f, 0x82, 0x30, 0x01, 0x00, 0x00, //0x00000359 jb LBB0_36
0x48, 0x8d, 0x05, 0xba, 0x05, 0x00, 0x00, //0x0000035f leaq $1466(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x02, //0x00000366 movb (%r10,%rax), %al
0x88, 0x47, 0x01, //0x0000036a movb %al, $1(%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000036d movl $1, %ecx
0xe9, 0x26, 0x01, 0x00, 0x00, //0x00000372 jmp LBB0_37
//0x00000377 LBB0_17
0x48, 0xb9, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x00000377 movabsq $10000000000000000, %rcx
0x48, 0x39, 0xce, //0x00000381 cmpq %rcx, %rsi
0x0f, 0x83, 0xbc, 0x02, 0x00, 0x00, //0x00000384 jae LBB0_19
0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000038a movabsq $-6067343680855748867, %rcx
0x48, 0x89, 0xf0, //0x00000394 movq %rsi, %rax
0x48, 0xf7, 0xe1, //0x00000397 mulq %rcx
0x48, 0xc1, 0xea, 0x1a, //0x0000039a shrq $26, %rdx
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x0000039e imull $100000000, %edx, %eax
0x29, 0xc6, //0x000003a4 subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xc2, //0x000003a6 vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0x4e, 0xfc, 0xff, 0xff, //0x000003aa vmovdqu $-946(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x000003b2 vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x000003b6 vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x000003bb movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x000003c0 vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x000003c5 vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x000003c9 vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x000003cd vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x000003d1 vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x000003d6 vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x000003db vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0x48, 0xfc, 0xff, 0xff, //0x000003e0 vmovddup $-952(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x000003e8 vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0x44, 0xfc, 0xff, 0xff, //0x000003ec vmovddup $-956(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x000003f4 vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0x10, 0xfc, 0xff, 0xff, //0x000003f8 vmovdqu $-1008(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x00000400 vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x00000404 vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x00000409 vpsubw %xmm6, %xmm0, %xmm0
0xc5, 0xf9, 0x6e, 0xf6, //0x0000040d vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x00000411 vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x00000415 vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x0000041a vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x0000041e vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x00000422 vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x00000426 vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x0000042b vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x00000430 vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x00000435 vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x00000439 vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x0000043d vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x00000441 vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x00000446 vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x0000044a vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x0d, 0xca, 0xfb, 0xff, 0xff, //0x0000044e vpaddb $-1078(%rip), %xmm0, %xmm1 /* LCPI0_4+0(%rip) */
0xc5, 0xe9, 0xef, 0xd2, //0x00000456 vpxor %xmm2, %xmm2, %xmm2
0xc5, 0xf9, 0x74, 0xc2, //0x0000045a vpcmpeqb %xmm2, %xmm0, %xmm0
0xc5, 0xf9, 0xd7, 0xc0, //0x0000045e vpmovmskb %xmm0, %eax
0x0d, 0x00, 0x80, 0x00, 0x00, //0x00000462 orl $32768, %eax
0x35, 0xff, 0x7f, 0xff, 0xff, //0x00000467 xorl $-32769, %eax
0x0f, 0xbc, 0xc0, //0x0000046c bsfl %eax, %eax
0xb9, 0x10, 0x00, 0x00, 0x00, //0x0000046f movl $16, %ecx
0x29, 0xc1, //0x00000474 subl %eax, %ecx
0x48, 0xc1, 0xe0, 0x04, //0x00000476 shlq $4, %rax
0x48, 0x8d, 0x15, 0x6f, 0x05, 0x00, 0x00, //0x0000047a leaq $1391(%rip), %rdx /* _VecShiftShuffles+0(%rip) */
0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x00000481 vpshufb (%rax,%rdx), %xmm1, %xmm0
0xc5, 0xfa, 0x7f, 0x07, //0x00000487 vmovdqu %xmm0, (%rdi)
0x89, 0xc8, //0x0000048b movl %ecx, %eax
0x5d, //0x0000048d popq %rbp
0xc3, //0x0000048e retq
//0x0000048f LBB0_36
0x31, 0xc9, //0x0000048f xorl %ecx, %ecx
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x00000491 cmpl $1000000, %esi
0x0f, 0x82, 0x7b, 0x00, 0x00, 0x00, //0x00000497 jb LBB0_38
//0x0000049d LBB0_37
0x44, 0x89, 0xd0, //0x0000049d movl %r10d, %eax
0x48, 0x83, 0xc8, 0x01, //0x000004a0 orq $1, %rax
0x48, 0x8d, 0x35, 0x75, 0x04, 0x00, 0x00, //0x000004a4 leaq $1141(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x000004ab movb (%rax,%rsi), %al
0x89, 0xce, //0x000004ae movl %ecx, %esi
0xff, 0xc1, //0x000004b0 incl %ecx
0x88, 0x44, 0x37, 0x01, //0x000004b2 movb %al, $1(%rdi,%rsi)
//0x000004b6 LBB0_39
0x48, 0x8d, 0x05, 0x63, 0x04, 0x00, 0x00, //0x000004b6 leaq $1123(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x01, //0x000004bd movb (%r9,%rax), %al
0x89, 0xce, //0x000004c1 movl %ecx, %esi
0xff, 0xc1, //0x000004c3 incl %ecx
0x88, 0x44, 0x37, 0x01, //0x000004c5 movb %al, $1(%rdi,%rsi)
//0x000004c9 LBB0_40
0x41, 0x0f, 0xb7, 0xc1, //0x000004c9 movzwl %r9w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000004cd orq $1, %rax
0x48, 0x8d, 0x35, 0x48, 0x04, 0x00, 0x00, //0x000004d1 leaq $1096(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x000004d8 movb (%rax,%rsi), %al
0x89, 0xca, //0x000004db movl %ecx, %edx
0x88, 0x44, 0x17, 0x01, //0x000004dd movb %al, $1(%rdi,%rdx)
0x41, 0x8a, 0x04, 0x30, //0x000004e1 movb (%r8,%rsi), %al
0x88, 0x44, 0x17, 0x02, //0x000004e5 movb %al, $2(%rdi,%rdx)
0x41, 0x0f, 0xb7, 0xc0, //0x000004e9 movzwl %r8w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000004ed orq $1, %rax
0x8a, 0x04, 0x30, //0x000004f1 movb (%rax,%rsi), %al
0x88, 0x44, 0x17, 0x03, //0x000004f4 movb %al, $3(%rdi,%rdx)
0x41, 0x8a, 0x04, 0x33, //0x000004f8 movb (%r11,%rsi), %al
0x88, 0x44, 0x17, 0x04, //0x000004fc movb %al, $4(%rdi,%rdx)
0x41, 0x0f, 0xb7, 0xc3, //0x00000500 movzwl %r11w, %eax
0x48, 0x83, 0xc8, 0x01, //0x00000504 orq $1, %rax
0x8a, 0x04, 0x30, //0x00000508 movb (%rax,%rsi), %al
0x83, 0xc1, 0x05, //0x0000050b addl $5, %ecx
0x88, 0x44, 0x17, 0x05, //0x0000050e movb %al, $5(%rdi,%rdx)
0xff, 0xc1, //0x00000512 incl %ecx
0x89, 0xc8, //0x00000514 movl %ecx, %eax
0x5d, //0x00000516 popq %rbp
0xc3, //0x00000517 retq
//0x00000518 LBB0_38
0x31, 0xc9, //0x00000518 xorl %ecx, %ecx
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x0000051a cmpl $100000, %esi
0x0f, 0x83, 0x90, 0xff, 0xff, 0xff, //0x00000520 jae LBB0_39
0xe9, 0x9e, 0xff, 0xff, 0xff, //0x00000526 jmp LBB0_40
//0x0000052b LBB0_41
0x48, 0xb9, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000052b movabsq $10000000000000000, %rcx
0x48, 0x39, 0xce, //0x00000535 cmpq %rcx, %rsi
0x0f, 0x83, 0x71, 0x02, 0x00, 0x00, //0x00000538 jae LBB0_43
0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000053e movabsq $-6067343680855748867, %rcx
0x48, 0x89, 0xf0, //0x00000548 movq %rsi, %rax
0x48, 0xf7, 0xe1, //0x0000054b mulq %rcx
0x48, 0xc1, 0xea, 0x1a, //0x0000054e shrq $26, %rdx
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000552 imull $100000000, %edx, %eax
0x29, 0xc6, //0x00000558 subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xc2, //0x0000055a vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0x9a, 0xfa, 0xff, 0xff, //0x0000055e vmovdqu $-1382(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x00000566 vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x0000056a vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x0000056f movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000574 vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x00000579 vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x0000057d vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x00000581 vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000585 vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x0000058a vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000058f vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0x94, 0xfa, 0xff, 0xff, //0x00000594 vmovddup $-1388(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x0000059c vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0x90, 0xfa, 0xff, 0xff, //0x000005a0 vmovddup $-1392(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x000005a8 vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0x5c, 0xfa, 0xff, 0xff, //0x000005ac vmovdqu $-1444(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x000005b4 vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000005b8 vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x000005bd vpsubw %xmm6, %xmm0, %xmm0
0xc5, 0xf9, 0x6e, 0xf6, //0x000005c1 vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x000005c5 vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000005c9 vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x000005ce vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x000005d2 vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x000005d6 vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000005da vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000005df vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000005e4 vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x000005e9 vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x000005ed vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x000005f1 vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000005f5 vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x000005fa vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x000005fe vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x0d, 0x16, 0xfa, 0xff, 0xff, //0x00000602 vpaddb $-1514(%rip), %xmm0, %xmm1 /* LCPI0_4+0(%rip) */
0xc5, 0xe9, 0xef, 0xd2, //0x0000060a vpxor %xmm2, %xmm2, %xmm2
0xc5, 0xf9, 0x74, 0xc2, //0x0000060e vpcmpeqb %xmm2, %xmm0, %xmm0
0xc5, 0xf9, 0xd7, 0xc0, //0x00000612 vpmovmskb %xmm0, %eax
0x0d, 0x00, 0x80, 0x00, 0x00, //0x00000616 orl $32768, %eax
0x35, 0xff, 0x7f, 0xff, 0xff, //0x0000061b xorl $-32769, %eax
0x0f, 0xbc, 0xc0, //0x00000620 bsfl %eax, %eax
0xb9, 0x10, 0x00, 0x00, 0x00, //0x00000623 movl $16, %ecx
0x29, 0xc1, //0x00000628 subl %eax, %ecx
0x48, 0xc1, 0xe0, 0x04, //0x0000062a shlq $4, %rax
0x48, 0x8d, 0x15, 0xbb, 0x03, 0x00, 0x00, //0x0000062e leaq $955(%rip), %rdx /* _VecShiftShuffles+0(%rip) */
0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x00000635 vpshufb (%rax,%rdx), %xmm1, %xmm0
0xc5, 0xfa, 0x7f, 0x47, 0x01, //0x0000063b vmovdqu %xmm0, $1(%rdi)
0xff, 0xc1, //0x00000640 incl %ecx
0x89, 0xc8, //0x00000642 movl %ecx, %eax
0x5d, //0x00000644 popq %rbp
0xc3, //0x00000645 retq
//0x00000646 LBB0_19
0x48, 0xba, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x00000646 movabsq $4153837486827862103, %rdx
0x48, 0x89, 0xf0, //0x00000650 movq %rsi, %rax
0x48, 0xf7, 0xe2, //0x00000653 mulq %rdx
0x48, 0xc1, 0xea, 0x33, //0x00000656 shrq $51, %rdx
0x48, 0x0f, 0xaf, 0xca, //0x0000065a imulq %rdx, %rcx
0x48, 0x29, 0xce, //0x0000065e subq %rcx, %rsi
0x83, 0xfa, 0x09, //0x00000661 cmpl $9, %edx
0x0f, 0x87, 0x0f, 0x00, 0x00, 0x00, //0x00000664 ja LBB0_21
0x80, 0xc2, 0x30, //0x0000066a addb $48, %dl
0x88, 0x17, //0x0000066d movb %dl, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000066f movl $1, %ecx
0xe9, 0x5c, 0x00, 0x00, 0x00, //0x00000674 jmp LBB0_24
//0x00000679 LBB0_21
0x83, 0xfa, 0x63, //0x00000679 cmpl $99, %edx
0x0f, 0x87, 0x1f, 0x00, 0x00, 0x00, //0x0000067c ja LBB0_23
0x89, 0xd0, //0x00000682 movl %edx, %eax
0x48, 0x8d, 0x0d, 0x95, 0x02, 0x00, 0x00, //0x00000684 leaq $661(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x0000068b movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x0000068e movb $1(%rcx,%rax,2), %al
0x88, 0x17, //0x00000692 movb %dl, (%rdi)
0x88, 0x47, 0x01, //0x00000694 movb %al, $1(%rdi)
0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000697 movl $2, %ecx
0xe9, 0x34, 0x00, 0x00, 0x00, //0x0000069c jmp LBB0_24
//0x000006a1 LBB0_23
0x89, 0xd0, //0x000006a1 movl %edx, %eax
0xc1, 0xe8, 0x02, //0x000006a3 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000006a6 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x000006ac shrl $17, %eax
0x8d, 0x48, 0x30, //0x000006af leal $48(%rax), %ecx
0x88, 0x0f, //0x000006b2 movb %cl, (%rdi)
0x6b, 0xc0, 0x64, //0x000006b4 imull $100, %eax, %eax
0x29, 0xc2, //0x000006b7 subl %eax, %edx
0x0f, 0xb7, 0xc2, //0x000006b9 movzwl %dx, %eax
0x48, 0x8d, 0x0d, 0x5d, 0x02, 0x00, 0x00, //0x000006bc leaq $605(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x000006c3 movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x000006c6 movb $1(%rcx,%rax,2), %al
0x88, 0x57, 0x01, //0x000006ca movb %dl, $1(%rdi)
0x88, 0x47, 0x02, //0x000006cd movb %al, $2(%rdi)
0xb9, 0x03, 0x00, 0x00, 0x00, //0x000006d0 movl $3, %ecx
//0x000006d5 LBB0_24
0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x000006d5 movabsq $-6067343680855748867, %rdx
0x48, 0x89, 0xf0, //0x000006df movq %rsi, %rax
0x48, 0xf7, 0xe2, //0x000006e2 mulq %rdx
0x48, 0xc1, 0xea, 0x1a, //0x000006e5 shrq $26, %rdx
0xc5, 0xf9, 0x6e, 0xc2, //0x000006e9 vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0x0b, 0xf9, 0xff, 0xff, //0x000006ed vmovdqu $-1781(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x000006f5 vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x000006f9 vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x000006fe movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000703 vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x00000708 vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x0000070c vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x00000710 vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000714 vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000719 vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000071e vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0x05, 0xf9, 0xff, 0xff, //0x00000723 vmovddup $-1787(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x0000072b vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0x01, 0xf9, 0xff, 0xff, //0x0000072f vmovddup $-1791(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x00000737 vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0xcd, 0xf8, 0xff, 0xff, //0x0000073b vmovdqu $-1843(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x00000743 vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x00000747 vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x0000074c vpsubw %xmm6, %xmm0, %xmm0
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000750 imull $100000000, %edx, %eax
0x29, 0xc6, //0x00000756 subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xf6, //0x00000758 vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x0000075c vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x00000760 vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x00000765 vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x00000769 vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x0000076d vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x00000771 vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x00000776 vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x0000077b vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x00000780 vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x00000784 vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x00000788 vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x0000078c vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x00000791 vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x00000795 vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x05, 0x7f, 0xf8, 0xff, 0xff, //0x00000799 vpaddb $-1921(%rip), %xmm0, %xmm0 /* LCPI0_4+0(%rip) */
0x89, 0xc8, //0x000007a1 movl %ecx, %eax
0xc5, 0xfa, 0x7f, 0x04, 0x07, //0x000007a3 vmovdqu %xmm0, (%rdi,%rax)
0x83, 0xc9, 0x10, //0x000007a8 orl $16, %ecx
0x89, 0xc8, //0x000007ab movl %ecx, %eax
0x5d, //0x000007ad popq %rbp
0xc3, //0x000007ae retq
//0x000007af LBB0_43
0x48, 0xba, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x000007af movabsq $4153837486827862103, %rdx
0x48, 0x89, 0xf0, //0x000007b9 movq %rsi, %rax
0x48, 0xf7, 0xe2, //0x000007bc mulq %rdx
0x48, 0xc1, 0xea, 0x33, //0x000007bf shrq $51, %rdx
0x48, 0x0f, 0xaf, 0xca, //0x000007c3 imulq %rdx, %rcx
0x48, 0x29, 0xce, //0x000007c7 subq %rcx, %rsi
0x83, 0xfa, 0x09, //0x000007ca cmpl $9, %edx
0x0f, 0x87, 0x10, 0x00, 0x00, 0x00, //0x000007cd ja LBB0_45
0x80, 0xc2, 0x30, //0x000007d3 addb $48, %dl
0x88, 0x57, 0x01, //0x000007d6 movb %dl, $1(%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x000007d9 movl $1, %ecx
0xe9, 0x5e, 0x00, 0x00, 0x00, //0x000007de jmp LBB0_48
//0x000007e3 LBB0_45
0x83, 0xfa, 0x63, //0x000007e3 cmpl $99, %edx
0x0f, 0x87, 0x20, 0x00, 0x00, 0x00, //0x000007e6 ja LBB0_47
0x89, 0xd0, //0x000007ec movl %edx, %eax
0x48, 0x8d, 0x0d, 0x2b, 0x01, 0x00, 0x00, //0x000007ee leaq $299(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x000007f5 movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x000007f8 movb $1(%rcx,%rax,2), %al
0x88, 0x57, 0x01, //0x000007fc movb %dl, $1(%rdi)
0x88, 0x47, 0x02, //0x000007ff movb %al, $2(%rdi)
0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000802 movl $2, %ecx
0xe9, 0x35, 0x00, 0x00, 0x00, //0x00000807 jmp LBB0_48
//0x0000080c LBB0_47
0x89, 0xd0, //0x0000080c movl %edx, %eax
0xc1, 0xe8, 0x02, //0x0000080e shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000811 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000817 shrl $17, %eax
0x8d, 0x48, 0x30, //0x0000081a leal $48(%rax), %ecx
0x88, 0x4f, 0x01, //0x0000081d movb %cl, $1(%rdi)
0x6b, 0xc0, 0x64, //0x00000820 imull $100, %eax, %eax
0x29, 0xc2, //0x00000823 subl %eax, %edx
0x0f, 0xb7, 0xc2, //0x00000825 movzwl %dx, %eax
0x48, 0x8d, 0x0d, 0xf1, 0x00, 0x00, 0x00, //0x00000828 leaq $241(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x0000082f movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x00000832 movb $1(%rcx,%rax,2), %al
0x88, 0x57, 0x02, //0x00000836 movb %dl, $2(%rdi)
0x88, 0x47, 0x03, //0x00000839 movb %al, $3(%rdi)
0xb9, 0x03, 0x00, 0x00, 0x00, //0x0000083c movl $3, %ecx
//0x00000841 LBB0_48
0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000841 movabsq $-6067343680855748867, %rdx
0x48, 0x89, 0xf0, //0x0000084b movq %rsi, %rax
0x48, 0xf7, 0xe2, //0x0000084e mulq %rdx
0x48, 0xc1, 0xea, 0x1a, //0x00000851 shrq $26, %rdx
0xc5, 0xf9, 0x6e, 0xc2, //0x00000855 vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0x9f, 0xf7, 0xff, 0xff, //0x00000859 vmovdqu $-2145(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x00000861 vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x00000865 vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x0000086a movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x0000086f vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x00000874 vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x00000878 vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x0000087c vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000880 vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000885 vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000088a vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0x99, 0xf7, 0xff, 0xff, //0x0000088f vmovddup $-2151(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x00000897 vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0x95, 0xf7, 0xff, 0xff, //0x0000089b vmovddup $-2155(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x000008a3 vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0x61, 0xf7, 0xff, 0xff, //0x000008a7 vmovdqu $-2207(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x000008af vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000008b3 vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x000008b8 vpsubw %xmm6, %xmm0, %xmm0
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x000008bc imull $100000000, %edx, %eax
0x29, 0xc6, //0x000008c2 subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xf6, //0x000008c4 vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x000008c8 vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000008cc vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x000008d1 vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x000008d5 vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x000008d9 vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000008dd vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000008e2 vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000008e7 vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x000008ec vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x000008f0 vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x000008f4 vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000008f8 vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x000008fd vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x00000901 vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x05, 0x13, 0xf7, 0xff, 0xff, //0x00000905 vpaddb $-2285(%rip), %xmm0, %xmm0 /* LCPI0_4+0(%rip) */
0x89, 0xc8, //0x0000090d movl %ecx, %eax
0xc5, 0xfa, 0x7f, 0x44, 0x07, 0x01, //0x0000090f vmovdqu %xmm0, $1(%rdi,%rax)
0x83, 0xc9, 0x10, //0x00000915 orl $16, %ecx
0xff, 0xc1, //0x00000918 incl %ecx
0x89, 0xc8, //0x0000091a movl %ecx, %eax
0x5d, //0x0000091c popq %rbp
0xc3, //0x0000091d retq
0x00, 0x00, //0x0000091e .p2align 4, 0x00
//0x00000920 _Digits
0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000920 QUAD $0x3330323031303030; QUAD $0x3730363035303430 // .ascii 16, '0001020304050607'
0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000930 QUAD $0x3131303139303830; QUAD $0x3531343133313231 // .ascii 16, '0809101112131415'
0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000940 QUAD $0x3931383137313631; QUAD $0x3332323231323032 // .ascii 16, '1617181920212223'
0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000950 QUAD $0x3732363235323432; QUAD $0x3133303339323832 // .ascii 16, '2425262728293031'
0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000960 QUAD $0x3533343333333233; QUAD $0x3933383337333633 // .ascii 16, '3233343536373839'
0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000970 QUAD $0x3334323431343034; QUAD $0x3734363435343434 // .ascii 16, '4041424344454647'
0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000980 QUAD $0x3135303539343834; QUAD $0x3535343533353235 // .ascii 16, '4849505152535455'
0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000990 QUAD $0x3935383537353635; QUAD $0x3336323631363036 // .ascii 16, '5657585960616263'
0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x000009a0 QUAD $0x3736363635363436; QUAD $0x3137303739363836 // .ascii 16, '6465666768697071'
0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x000009b0 QUAD $0x3537343733373237; QUAD $0x3937383737373637 // .ascii 16, '7273747576777879'
0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x000009c0 QUAD $0x3338323831383038; QUAD $0x3738363835383438 // .ascii 16, '8081828384858687'
0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x000009d0 QUAD $0x3139303939383838; QUAD $0x3539343933393239 // .ascii 16, '8889909192939495'
0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x000009e0 QUAD $0x3939383937393639 // .ascii 8, '96979899'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009e8 .p2align 4, 0x00
//0x000009f0 _VecShiftShuffles
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, //0x000009f0 QUAD $0x0706050403020100; QUAD $0x0f0e0d0c0b0a0908 // .ascii 16, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, //0x00000a00 QUAD $0x0807060504030201; QUAD $0xff0f0e0d0c0b0a09 // .ascii 16, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, //0x00000a10 QUAD $0x0908070605040302; QUAD $0xffff0f0e0d0c0b0a // .ascii 16, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, //0x00000a20 QUAD $0x0a09080706050403; QUAD $0xffffff0f0e0d0c0b // .ascii 16, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, //0x00000a30 QUAD $0x0b0a090807060504; QUAD $0xffffffff0f0e0d0c // .ascii 16, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a40 QUAD $0x0c0b0a0908070605; QUAD $0xffffffffff0f0e0d // .ascii 16, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a50 QUAD $0x0d0c0b0a09080706; QUAD $0xffffffffffff0f0e // .ascii 16, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a60 QUAD $0x0e0d0c0b0a090807; QUAD $0xffffffffffffff0f // .ascii 16, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a70 QUAD $0x0f0e0d0c0b0a0908; QUAD $0xffffffffffffffff // .ascii 16, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
}

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_lspace func(sp unsafe.Pointer, nb int, off int) (ret int)
var S_lspace uintptr
//go:nosplit
func lspace(sp *byte, nb int, off int) (ret int) {
return F_lspace(rt.NoEscape(unsafe.Pointer(sp)), nb, off)
}

View File

@ -0,0 +1,37 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__lspace = 0
)
const (
_stack__lspace = 8
)
const (
_size__lspace = 113
)
var (
_pcsp__lspace = [][2]uint32{
{1, 0},
{89, 8},
{90, 0},
{103, 8},
{104, 0},
{111, 8},
{112, 0},
}
)
var _cfunc_lspace = []loader.CFunc{
{"_lspace_entry", 0, _entry__lspace, 0, nil},
{"_lspace", _entry__lspace, _size__lspace, _stack__lspace, _pcsp__lspace},
}

View File

@ -0,0 +1,44 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_lspace = []byte{
// .p2align 4, 0x90
// _lspace
0x55, // pushq %rbp
0x48, 0x89, 0xe5, //0x00000001 movq %rsp, %rbp
0x48, 0x39, 0xd6, //0x00000004 cmpq %rdx, %rsi
0x0f, 0x84, 0x4e, 0x00, 0x00, 0x00, //0x00000007 je LBB0_1
0x4c, 0x8d, 0x04, 0x37, //0x0000000d leaq (%rdi,%rsi), %r8
0x48, 0x8d, 0x44, 0x3a, 0x01, //0x00000011 leaq $1(%rdx,%rdi), %rax
0x48, 0x29, 0xf2, //0x00000016 subq %rsi, %rdx
0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000019 movabsq $4294977024, %rsi
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000023 .p2align 4, 0x90
//0x00000030 LBB0_3
0x0f, 0xbe, 0x48, 0xff, //0x00000030 movsbl $-1(%rax), %ecx
0x83, 0xf9, 0x20, //0x00000034 cmpl $32, %ecx
0x0f, 0x87, 0x2c, 0x00, 0x00, 0x00, //0x00000037 ja LBB0_5
0x48, 0x0f, 0xa3, 0xce, //0x0000003d btq %rcx, %rsi
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00000041 jae LBB0_5
0x48, 0xff, 0xc0, //0x00000047 incq %rax
0x48, 0xff, 0xc2, //0x0000004a incq %rdx
0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x0000004d jne LBB0_3
0x49, 0x29, 0xf8, //0x00000053 subq %rdi, %r8
0x4c, 0x89, 0xc0, //0x00000056 movq %r8, %rax
0x5d, //0x00000059 popq %rbp
0xc3, //0x0000005a retq
//0x0000005b LBB0_1
0x48, 0x01, 0xfa, //0x0000005b addq %rdi, %rdx
0x49, 0x89, 0xd0, //0x0000005e movq %rdx, %r8
0x49, 0x29, 0xf8, //0x00000061 subq %rdi, %r8
0x4c, 0x89, 0xc0, //0x00000064 movq %r8, %rax
0x5d, //0x00000067 popq %rbp
0xc3, //0x00000068 retq
//0x00000069 LBB0_5
0x48, 0xf7, 0xd7, //0x00000069 notq %rdi
0x48, 0x01, 0xf8, //0x0000006c addq %rdi, %rax
0x5d, //0x0000006f popq %rbp
0xc3, //0x00000070 retq
}

View File

@ -1,188 +0,0 @@
// +build amd64
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var (
__i64toa func(out unsafe.Pointer, val int64) (ret int)
__u64toa func(out unsafe.Pointer, val uint64) (ret int)
__f64toa func(out unsafe.Pointer, val float64) (ret int)
__f32toa func(out unsafe.Pointer, val float32) (ret int)
__lspace func(sp unsafe.Pointer, nb int, off int) (ret int)
__quote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer, flags uint64) (ret int)
__html_escape func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer) (ret int)
__unquote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep unsafe.Pointer, flags uint64) (ret int)
__value func(s unsafe.Pointer, n int, p int, v unsafe.Pointer, flags uint64) (ret int)
__vstring func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer, flags uint64)
__vnumber func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
__vsigned func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
__vunsigned func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
__skip_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
__skip_one_fast func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
__skip_array func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
__skip_object func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
__skip_number func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
__validate_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer) (ret int)
__get_by_path func(s unsafe.Pointer, p unsafe.Pointer, path unsafe.Pointer, m unsafe.Pointer) (ret int)
__validate_utf8 func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer) (ret int)
__validate_utf8_fast func(s unsafe.Pointer) (ret int)
)
//go:nosplit
func i64toa(out *byte, val int64) (ret int) {
return __i64toa(rt.NoEscape(unsafe.Pointer(out)), val)
}
//go:nosplit
func u64toa(out *byte, val uint64) (ret int) {
return __u64toa(rt.NoEscape(unsafe.Pointer(out)), val)
}
//go:nosplit
func f64toa(out *byte, val float64) (ret int) {
return __f64toa(rt.NoEscape(unsafe.Pointer(out)), val)
}
//go:nosplit
func f32toa(out *byte, val float32) (ret int) {
return __f32toa(rt.NoEscape(unsafe.Pointer(out)), val)
}
//go:nosplit
func lspace(sp unsafe.Pointer, nb int, off int) (ret int) {
return __lspace(rt.NoEscape(sp), nb, off)
}
//go:nosplit
func quote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int, flags uint64) (ret int) {
return __quote(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(dn)), flags)
}
//go:nosplit
func html_escape(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int) (ret int) {
return __html_escape(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(dn)))
}
//go:nosplit
func unquote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep *int, flags uint64) (ret int) {
return __unquote(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(ep)), flags)
}
//go:nosplit
func value(s unsafe.Pointer, n int, p int, v *types.JsonState, flags uint64) (ret int) {
return __value(rt.NoEscape(unsafe.Pointer(s)), n, p, rt.NoEscape(unsafe.Pointer(v)), flags)
}
//go:nosplit
func vstring(s *string, p *int, v *types.JsonState, flags uint64) {
__vstring(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)), flags)
}
//go:nosplit
func vnumber(s *string, p *int, v *types.JsonState) {
__vnumber(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
}
//go:nosplit
func vsigned(s *string, p *int, v *types.JsonState) {
__vsigned(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
}
//go:nosplit
func vunsigned(s *string, p *int, v *types.JsonState) {
__vunsigned(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
}
//go:nosplit
func skip_one(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return __skip_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}
//go:nosplit
func skip_one_fast(s *string, p *int) (ret int) {
return __skip_one_fast(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
}
//go:nosplit
func skip_array(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return __skip_array(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}
//go:nosplit
func skip_object(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return __skip_object(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}
//go:nosplit
func skip_number(s *string, p *int) (ret int) {
return __skip_number(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
}
//go:nosplit
func validate_one(s *string, p *int, m *types.StateMachine) (ret int) {
return __validate_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)))
}
//go:nosplit
func get_by_path(s *string, p *int, path *[]interface{}, m *types.StateMachine) (ret int) {
return __get_by_path(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(path)), rt.NoEscape(unsafe.Pointer(m)))
}
//go:nosplit
func validate_utf8(s *string, p *int, m *types.StateMachine) (ret int) {
return __validate_utf8(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)))
}
//go:nosplit
func validate_utf8_fast(s *string) (ret int) {
return __validate_utf8_fast(rt.NoEscape(unsafe.Pointer(s)))
}

View File

@ -0,0 +1,47 @@
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`github.com/bytedance/sonic/loader`
)
func Use() {
loader.WrapGoC(_text_f64toa, _cfunc_f64toa, []loader.GoC{{"_f64toa", &S_f64toa, &F_f64toa}}, "avx", "avx/f64toa.c")
loader.WrapGoC(_text_f32toa, _cfunc_f32toa, []loader.GoC{{"_f32toa", &S_f32toa, &F_f32toa}}, "avx", "avx/f32toa.c")
loader.WrapGoC(_text_get_by_path, _cfunc_get_by_path, []loader.GoC{{"_get_by_path", &S_get_by_path, &F_get_by_path}}, "avx", "avx/get_by_path.c")
loader.WrapGoC(_text_html_escape, _cfunc_html_escape, []loader.GoC{{"_html_escape", &S_html_escape, &F_html_escape}}, "avx", "avx/html_escape.c")
loader.WrapGoC(_text_i64toa, _cfunc_i64toa, []loader.GoC{{"_i64toa", &S_i64toa, &F_i64toa}}, "avx", "avx/i64toa.c")
loader.WrapGoC(_text_lspace, _cfunc_lspace, []loader.GoC{{"_lspace", &S_lspace, &F_lspace}}, "avx", "avx/lspace.c")
loader.WrapGoC(_text_quote, _cfunc_quote, []loader.GoC{{"_quote", &S_quote, &F_quote}}, "avx", "avx/quote.c")
loader.WrapGoC(_text_skip_array, _cfunc_skip_array, []loader.GoC{{"_skip_array", &S_skip_array, &F_skip_array}}, "avx", "avx/skip_array.c")
loader.WrapGoC(_text_skip_number, _cfunc_skip_number, []loader.GoC{{"_skip_number", &S_skip_number, &F_skip_number}}, "avx", "avx/skip_number.c")
loader.WrapGoC(_text_skip_one, _cfunc_skip_one, []loader.GoC{{"_skip_one", &S_skip_one, &F_skip_one}}, "avx", "avx/skip_one.c")
loader.WrapGoC(_text_skip_object, _cfunc_skip_object, []loader.GoC{{"_skip_object", &S_skip_object, &F_skip_object}}, "avx", "avx/skip_object.c")
loader.WrapGoC(_text_skip_one_fast, _cfunc_skip_one_fast, []loader.GoC{{"_skip_one_fast", &S_skip_one_fast, &F_skip_one_fast}}, "avx", "avx/skip_one_fast.c")
loader.WrapGoC(_text_u64toa, _cfunc_u64toa, []loader.GoC{{"_u64toa", &S_u64toa, &F_u64toa}}, "avx", "avx/u64toa.c")
loader.WrapGoC(_text_unquote, _cfunc_unquote, []loader.GoC{{"_unquote", &S_unquote, &F_unquote}}, "avx", "avx/unquote.c")
loader.WrapGoC(_text_validate_one, _cfunc_validate_one, []loader.GoC{{"_validate_one", &S_validate_one, &F_validate_one}}, "avx", "avx/validate_one.c")
loader.WrapGoC(_text_validate_utf8, _cfunc_validate_utf8, []loader.GoC{{"_validate_utf8", &S_validate_utf8, &F_validate_utf8}}, "avx", "avx/validate_utf8.c")
loader.WrapGoC(_text_validate_utf8_fast, _cfunc_validate_utf8_fast, []loader.GoC{{"_validate_utf8_fast", &S_validate_utf8_fast, &F_validate_utf8_fast}}, "avx", "avx/validate_utf8_fast.c")
loader.WrapGoC(_text_vnumber, _cfunc_vnumber, []loader.GoC{{"_vnumber", &S_vnumber, &F_vnumber}}, "avx", "avx/vnumber.c")
loader.WrapGoC(_text_vsigned, _cfunc_vsigned, []loader.GoC{{"_vsigned", &S_vsigned, &F_vsigned}}, "avx", "avx/vsigned.c")
loader.WrapGoC(_text_vunsigned, _cfunc_vunsigned, []loader.GoC{{"_vunsigned", &S_vunsigned, &F_vunsigned}}, "avx", "avx/vunsigned.c")
loader.WrapGoC(_text_vstring, _cfunc_vstring, []loader.GoC{{"_vstring", &S_vstring, &F_vstring}}, "avx", "avx/vstring.c")
loader.WrapGoC(_text_value, _cfunc_value, []loader.GoC{{"_value", &S_value, &F_value}}, "avx", "avx/value.c")
}

View File

@ -1,607 +0,0 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__f32toa = 31168
_entry__f64toa = 192
_entry__format_significand = 35344
_entry__format_integer = 3040
_entry__get_by_path = 25696
_entry__fsm_exec = 17920
_entry__advance_string = 14320
_entry__advance_string_default = 36736
_entry__do_skip_number = 20528
_entry__skip_one_fast = 22176
_entry__html_escape = 8912
_entry__i64toa = 3472
_entry__u64toa = 3584
_entry__lspace = 16
_entry__quote = 4864
_entry__skip_array = 17872
_entry__skip_number = 21792
_entry__skip_object = 20160
_entry__skip_one = 21952
_entry__unquote = 6576
_entry__validate_one = 22000
_entry__validate_utf8 = 29904
_entry__validate_utf8_fast = 30576
_entry__value = 12320
_entry__vnumber = 15648
_entry__atof_eisel_lemire64 = 10160
_entry__atof_native = 11712
_entry__decimal_to_f64 = 10528
_entry__right_shift = 36304
_entry__left_shift = 35808
_entry__vsigned = 17200
_entry__vstring = 14144
_entry__vunsigned = 17520
)
const (
_stack__f32toa = 48
_stack__f64toa = 80
_stack__format_significand = 24
_stack__format_integer = 16
_stack__get_by_path = 280
_stack__fsm_exec = 168
_stack__advance_string = 64
_stack__advance_string_default = 64
_stack__do_skip_number = 48
_stack__skip_one_fast = 176
_stack__html_escape = 72
_stack__i64toa = 16
_stack__u64toa = 8
_stack__lspace = 8
_stack__quote = 56
_stack__skip_array = 176
_stack__skip_number = 104
_stack__skip_object = 176
_stack__skip_one = 176
_stack__unquote = 88
_stack__validate_one = 176
_stack__validate_utf8 = 48
_stack__validate_utf8_fast = 24
_stack__value = 328
_stack__vnumber = 240
_stack__atof_eisel_lemire64 = 32
_stack__atof_native = 136
_stack__decimal_to_f64 = 80
_stack__right_shift = 8
_stack__left_shift = 24
_stack__vsigned = 16
_stack__vstring = 120
_stack__vunsigned = 8
)
const (
_size__f32toa = 3392
_size__f64toa = 2848
_size__format_significand = 464
_size__format_integer = 432
_size__get_by_path = 4208
_size__fsm_exec = 1692
_size__advance_string = 1280
_size__advance_string_default = 944
_size__do_skip_number = 924
_size__skip_one_fast = 3016
_size__html_escape = 1248
_size__i64toa = 48
_size__u64toa = 1232
_size__lspace = 144
_size__quote = 1696
_size__skip_array = 48
_size__skip_number = 160
_size__skip_object = 48
_size__skip_one = 48
_size__unquote = 2272
_size__validate_one = 48
_size__validate_utf8 = 672
_size__validate_utf8_fast = 560
_size__value = 1308
_size__vnumber = 1552
_size__atof_eisel_lemire64 = 368
_size__atof_native = 608
_size__decimal_to_f64 = 1184
_size__right_shift = 400
_size__left_shift = 496
_size__vsigned = 320
_size__vstring = 128
_size__vunsigned = 336
)
var (
_pcsp__f32toa = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{3350, 48},
{3351, 40},
{3353, 32},
{3355, 24},
{3357, 16},
{3359, 8},
{3363, 0},
{3385, 48},
}
_pcsp__f64toa = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{2788, 56},
{2792, 48},
{2793, 40},
{2795, 32},
{2797, 24},
{2799, 16},
{2801, 8},
{2805, 0},
{2843, 56},
}
_pcsp__format_significand = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{452, 24},
{453, 16},
{455, 8},
{457, 0},
}
_pcsp__format_integer = [][2]uint32{
{1, 0},
{4, 8},
{412, 16},
{413, 8},
{414, 0},
{423, 16},
{424, 8},
{426, 0},
}
_pcsp__get_by_path = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{4012, 104},
{4016, 48},
{4017, 40},
{4019, 32},
{4021, 24},
{4023, 16},
{4025, 8},
{4026, 0},
{4194, 104},
}
_pcsp__fsm_exec = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1342, 104},
{1346, 48},
{1347, 40},
{1349, 32},
{1351, 24},
{1353, 16},
{1355, 8},
{1356, 0},
{1692, 104},
}
_pcsp__advance_string = [][2]uint32{
{14, 0},
{18, 8},
{20, 16},
{22, 24},
{24, 32},
{26, 40},
{27, 48},
{557, 56},
{561, 48},
{562, 40},
{564, 32},
{566, 24},
{568, 16},
{570, 8},
{571, 0},
{1268, 56},
}
_pcsp__advance_string_default = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{552, 64},
{556, 48},
{557, 40},
{559, 32},
{561, 24},
{563, 16},
{565, 8},
{566, 0},
{931, 64},
}
_pcsp__do_skip_number = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{849, 48},
{850, 40},
{852, 32},
{854, 24},
{856, 16},
{858, 8},
{859, 0},
{924, 48},
}
_pcsp__skip_one_fast = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{658, 176},
{659, 168},
{661, 160},
{663, 152},
{665, 144},
{667, 136},
{671, 128},
{3016, 176},
}
_pcsp__html_escape = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1224, 72},
{1228, 48},
{1229, 40},
{1231, 32},
{1233, 24},
{1235, 16},
{1237, 8},
{1239, 0},
}
_pcsp__i64toa = [][2]uint32{
{14, 0},
{34, 8},
{36, 0},
}
_pcsp__u64toa = [][2]uint32{
{1, 0},
{161, 8},
{162, 0},
{457, 8},
{458, 0},
{756, 8},
{757, 0},
{1221, 8},
{1223, 0},
}
_pcsp__lspace = [][2]uint32{
{1, 0},
{89, 8},
{90, 0},
{103, 8},
{104, 0},
{111, 8},
{113, 0},
}
_pcsp__quote = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1649, 56},
{1653, 48},
{1654, 40},
{1656, 32},
{1658, 24},
{1660, 16},
{1662, 8},
{1663, 0},
{1690, 56},
}
_pcsp__skip_array = [][2]uint32{
{1, 0},
{28, 8},
{34, 0},
}
_pcsp__skip_number = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{107, 56},
{111, 48},
{112, 40},
{114, 32},
{116, 24},
{118, 16},
{120, 8},
{121, 0},
{145, 56},
}
_pcsp__skip_object = [][2]uint32{
{1, 0},
{28, 8},
{34, 0},
}
_pcsp__skip_one = [][2]uint32{
{1, 0},
{30, 8},
{36, 0},
}
_pcsp__unquote = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1684, 88},
{1688, 48},
{1689, 40},
{1691, 32},
{1693, 24},
{1695, 16},
{1697, 8},
{1698, 0},
{2270, 88},
}
_pcsp__validate_one = [][2]uint32{
{1, 0},
{35, 8},
{41, 0},
}
_pcsp__validate_utf8 = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{11, 40},
{623, 48},
{627, 40},
{628, 32},
{630, 24},
{632, 16},
{634, 8},
{635, 0},
{666, 48},
}
_pcsp__validate_utf8_fast = [][2]uint32{
{1, 0},
{4, 8},
{5, 16},
{247, 24},
{251, 16},
{252, 8},
{253, 0},
{527, 24},
{531, 16},
{532, 8},
{534, 0},
}
_pcsp__value = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{495, 88},
{499, 48},
{500, 40},
{502, 32},
{504, 24},
{506, 16},
{508, 8},
{509, 0},
{1308, 88},
}
_pcsp__vnumber = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{803, 104},
{807, 48},
{808, 40},
{810, 32},
{812, 24},
{814, 16},
{816, 8},
{817, 0},
{1547, 104},
}
_pcsp__atof_eisel_lemire64 = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{292, 32},
{293, 24},
{295, 16},
{297, 8},
{298, 0},
{362, 32},
}
_pcsp__atof_native = [][2]uint32{
{1, 0},
{4, 8},
{587, 56},
{591, 8},
{593, 0},
}
_pcsp__decimal_to_f64 = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1144, 56},
{1148, 48},
{1149, 40},
{1151, 32},
{1153, 24},
{1155, 16},
{1157, 8},
{1158, 0},
{1169, 56},
}
_pcsp__right_shift = [][2]uint32{
{1, 0},
{318, 8},
{319, 0},
{387, 8},
{388, 0},
{396, 8},
{398, 0},
}
_pcsp__left_shift = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{363, 24},
{364, 16},
{366, 8},
{367, 0},
{470, 24},
{471, 16},
{473, 8},
{474, 0},
{486, 24},
}
_pcsp__vsigned = [][2]uint32{
{1, 0},
{4, 8},
{112, 16},
{113, 8},
{114, 0},
{125, 16},
{126, 8},
{127, 0},
{260, 16},
{261, 8},
{262, 0},
{266, 16},
{267, 8},
{268, 0},
{306, 16},
{307, 8},
{308, 0},
{316, 16},
{317, 8},
{319, 0},
}
_pcsp__vstring = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{11, 40},
{105, 56},
{109, 40},
{110, 32},
{112, 24},
{114, 16},
{116, 8},
{118, 0},
}
_pcsp__vunsigned = [][2]uint32{
{1, 0},
{71, 8},
{72, 0},
{83, 8},
{84, 0},
{107, 8},
{108, 0},
{273, 8},
{274, 0},
{312, 8},
{313, 0},
{320, 8},
{322, 0},
}
)
var Funcs = []loader.CFunc{
{"__native_entry__", 0, 67, 0, nil},
{"_f32toa", _entry__f32toa, _size__f32toa, _stack__f32toa, _pcsp__f32toa},
{"_f64toa", _entry__f64toa, _size__f64toa, _stack__f64toa, _pcsp__f64toa},
{"_format_significand", _entry__format_significand, _size__format_significand, _stack__format_significand, _pcsp__format_significand},
{"_format_integer", _entry__format_integer, _size__format_integer, _stack__format_integer, _pcsp__format_integer},
{"_get_by_path", _entry__get_by_path, _size__get_by_path, _stack__get_by_path, _pcsp__get_by_path},
{"_fsm_exec", _entry__fsm_exec, _size__fsm_exec, _stack__fsm_exec, _pcsp__fsm_exec},
{"_advance_string", _entry__advance_string, _size__advance_string, _stack__advance_string, _pcsp__advance_string},
{"_advance_string_default", _entry__advance_string_default, _size__advance_string_default, _stack__advance_string_default, _pcsp__advance_string_default},
{"_do_skip_number", _entry__do_skip_number, _size__do_skip_number, _stack__do_skip_number, _pcsp__do_skip_number},
{"_skip_one_fast", _entry__skip_one_fast, _size__skip_one_fast, _stack__skip_one_fast, _pcsp__skip_one_fast},
{"_html_escape", _entry__html_escape, _size__html_escape, _stack__html_escape, _pcsp__html_escape},
{"_i64toa", _entry__i64toa, _size__i64toa, _stack__i64toa, _pcsp__i64toa},
{"_u64toa", _entry__u64toa, _size__u64toa, _stack__u64toa, _pcsp__u64toa},
{"_lspace", _entry__lspace, _size__lspace, _stack__lspace, _pcsp__lspace},
{"_quote", _entry__quote, _size__quote, _stack__quote, _pcsp__quote},
{"_skip_array", _entry__skip_array, _size__skip_array, _stack__skip_array, _pcsp__skip_array},
{"_skip_number", _entry__skip_number, _size__skip_number, _stack__skip_number, _pcsp__skip_number},
{"_skip_object", _entry__skip_object, _size__skip_object, _stack__skip_object, _pcsp__skip_object},
{"_skip_one", _entry__skip_one, _size__skip_one, _stack__skip_one, _pcsp__skip_one},
{"_unquote", _entry__unquote, _size__unquote, _stack__unquote, _pcsp__unquote},
{"_validate_one", _entry__validate_one, _size__validate_one, _stack__validate_one, _pcsp__validate_one},
{"_validate_utf8", _entry__validate_utf8, _size__validate_utf8, _stack__validate_utf8, _pcsp__validate_utf8},
{"_validate_utf8_fast", _entry__validate_utf8_fast, _size__validate_utf8_fast, _stack__validate_utf8_fast, _pcsp__validate_utf8_fast},
{"_value", _entry__value, _size__value, _stack__value, _pcsp__value},
{"_vnumber", _entry__vnumber, _size__vnumber, _stack__vnumber, _pcsp__vnumber},
{"_atof_eisel_lemire64", _entry__atof_eisel_lemire64, _size__atof_eisel_lemire64, _stack__atof_eisel_lemire64, _pcsp__atof_eisel_lemire64},
{"_atof_native", _entry__atof_native, _size__atof_native, _stack__atof_native, _pcsp__atof_native},
{"_decimal_to_f64", _entry__decimal_to_f64, _size__decimal_to_f64, _stack__decimal_to_f64, _pcsp__decimal_to_f64},
{"_right_shift", _entry__right_shift, _size__right_shift, _stack__right_shift, _pcsp__right_shift},
{"_left_shift", _entry__left_shift, _size__left_shift, _stack__left_shift, _pcsp__left_shift},
{"_vsigned", _entry__vsigned, _size__vsigned, _stack__vsigned, _pcsp__vsigned},
{"_vstring", _entry__vstring, _size__vstring, _stack__vstring, _pcsp__vstring},
{"_vunsigned", _entry__vunsigned, _size__vunsigned, _stack__vunsigned, _pcsp__vunsigned},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_quote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer, flags uint64) (ret int)
var S_quote uintptr
//go:nosplit
func quote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int, flags uint64) (ret int) {
return F_quote(rt.NoEscape(sp), nb, rt.NoEscape(dp), rt.NoEscape(unsafe.Pointer(dn)), flags)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__quote = 48
)
const (
_stack__quote = 56
)
const (
_size__quote = 1696
)
var (
_pcsp__quote = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1649, 56},
{1653, 48},
{1654, 40},
{1656, 32},
{1658, 24},
{1660, 16},
{1662, 8},
{1663, 0},
{1690, 56},
}
)
var _cfunc_quote = []loader.CFunc{
{"_quote_entry", 0, _entry__quote, 0, nil},
{"_quote", _entry__quote, _size__quote, _stack__quote, _pcsp__quote},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the License );
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var F_skip_array func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
var S_skip_array uintptr
//go:nosplit
func skip_array(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return F_skip_array(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__skip_array = 160
)
const (
_stack__skip_array = 152
)
const (
_size__skip_array = 9524
)
var (
_pcsp__skip_array = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{8962, 152},
{8966, 48},
{8967, 40},
{8969, 32},
{8971, 24},
{8973, 16},
{8975, 8},
{8976, 0},
{9524, 152},
}
)
var _cfunc_skip_array = []loader.CFunc{
{"_skip_array_entry", 0, _entry__skip_array, 0, nil},
{"_skip_array", _entry__skip_array, _size__skip_array, _stack__skip_array, _pcsp__skip_array},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the License );
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_skip_number func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
var S_skip_number uintptr
//go:nosplit
func skip_number(s *string, p *int) (ret int) {
return F_skip_number(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__skip_number = 112
)
const (
_stack__skip_number = 72
)
const (
_size__skip_number = 1108
)
var (
_pcsp__skip_number = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1025, 72},
{1029, 48},
{1030, 40},
{1032, 32},
{1034, 24},
{1036, 16},
{1038, 8},
{1039, 0},
{1108, 72},
}
)
var _cfunc_skip_number = []loader.CFunc{
{"_skip_number_entry", 0, _entry__skip_number, 0, nil},
{"_skip_number", _entry__skip_number, _size__skip_number, _stack__skip_number, _pcsp__skip_number},
}

View File

@ -0,0 +1,394 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_skip_number = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, // QUAD $0x2f2f2f2f2f2f2f2f; QUAD $0x2f2f2f2f2f2f2f2f // .space 16, '////////////////'
//0x00000010 LCPI0_1
0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, //0x00000010 QUAD $0x3a3a3a3a3a3a3a3a; QUAD $0x3a3a3a3a3a3a3a3a // .space 16, '::::::::::::::::'
//0x00000020 LCPI0_2
0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, //0x00000020 QUAD $0x2b2b2b2b2b2b2b2b; QUAD $0x2b2b2b2b2b2b2b2b // .space 16, '++++++++++++++++'
//0x00000030 LCPI0_3
0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, //0x00000030 QUAD $0x2d2d2d2d2d2d2d2d; QUAD $0x2d2d2d2d2d2d2d2d // .space 16, '----------------'
//0x00000040 LCPI0_4
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //0x00000040 QUAD $0x2020202020202020; QUAD $0x2020202020202020 // .space 16, ' '
//0x00000050 LCPI0_5
0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, //0x00000050 QUAD $0x2e2e2e2e2e2e2e2e; QUAD $0x2e2e2e2e2e2e2e2e // .space 16, '................'
//0x00000060 LCPI0_6
0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, //0x00000060 QUAD $0x6565656565656565; QUAD $0x6565656565656565 // .space 16, 'eeeeeeeeeeeeeeee'
//0x00000070 .p2align 4, 0x90
//0x00000070 _skip_number
0x55, //0x00000070 pushq %rbp
0x48, 0x89, 0xe5, //0x00000071 movq %rsp, %rbp
0x41, 0x57, //0x00000074 pushq %r15
0x41, 0x56, //0x00000076 pushq %r14
0x41, 0x55, //0x00000078 pushq %r13
0x41, 0x54, //0x0000007a pushq %r12
0x53, //0x0000007c pushq %rbx
0x48, 0x83, 0xec, 0x18, //0x0000007d subq $24, %rsp
0x48, 0x8b, 0x1f, //0x00000081 movq (%rdi), %rbx
0x4c, 0x8b, 0x6f, 0x08, //0x00000084 movq $8(%rdi), %r13
0x48, 0x8b, 0x16, //0x00000088 movq (%rsi), %rdx
0x49, 0x29, 0xd5, //0x0000008b subq %rdx, %r13
0x31, 0xc0, //0x0000008e xorl %eax, %eax
0x80, 0x3c, 0x13, 0x2d, //0x00000090 cmpb $45, (%rbx,%rdx)
0x4c, 0x8d, 0x3c, 0x13, //0x00000094 leaq (%rbx,%rdx), %r15
0x0f, 0x94, 0xc0, //0x00000098 sete %al
0x49, 0x01, 0xc7, //0x0000009b addq %rax, %r15
0x49, 0x29, 0xc5, //0x0000009e subq %rax, %r13
0x0f, 0x84, 0xee, 0x03, 0x00, 0x00, //0x000000a1 je LBB0_1
0x41, 0x8a, 0x3f, //0x000000a7 movb (%r15), %dil
0x8d, 0x4f, 0xd0, //0x000000aa leal $-48(%rdi), %ecx
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000000ad movq $-2, %rax
0x80, 0xf9, 0x09, //0x000000b4 cmpb $9, %cl
0x0f, 0x87, 0xae, 0x03, 0x00, 0x00, //0x000000b7 ja LBB0_59
0x40, 0x80, 0xff, 0x30, //0x000000bd cmpb $48, %dil
0x0f, 0x85, 0x34, 0x00, 0x00, 0x00, //0x000000c1 jne LBB0_7
0xbf, 0x01, 0x00, 0x00, 0x00, //0x000000c7 movl $1, %edi
0x49, 0x83, 0xfd, 0x01, //0x000000cc cmpq $1, %r13
0x0f, 0x84, 0x6a, 0x03, 0x00, 0x00, //0x000000d0 je LBB0_58
0x41, 0x8a, 0x47, 0x01, //0x000000d6 movb $1(%r15), %al
0x04, 0xd2, //0x000000da addb $-46, %al
0x3c, 0x37, //0x000000dc cmpb $55, %al
0x0f, 0x87, 0x5c, 0x03, 0x00, 0x00, //0x000000de ja LBB0_58
0x0f, 0xb6, 0xc0, //0x000000e4 movzbl %al, %eax
0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000000e7 movabsq $36028797027352577, %rcx
0x48, 0x0f, 0xa3, 0xc1, //0x000000f1 btq %rax, %rcx
0x0f, 0x83, 0x45, 0x03, 0x00, 0x00, //0x000000f5 jae LBB0_58
//0x000000fb LBB0_7
0x48, 0x89, 0x55, 0xd0, //0x000000fb movq %rdx, $-48(%rbp)
0x49, 0x83, 0xfd, 0x10, //0x000000ff cmpq $16, %r13
0x0f, 0x82, 0x98, 0x03, 0x00, 0x00, //0x00000103 jb LBB0_8
0x48, 0x89, 0x5d, 0xc8, //0x00000109 movq %rbx, $-56(%rbp)
0x48, 0x89, 0x75, 0xc0, //0x0000010d movq %rsi, $-64(%rbp)
0x4d, 0x8d, 0x45, 0xf0, //0x00000111 leaq $-16(%r13), %r8
0x4c, 0x89, 0xc0, //0x00000115 movq %r8, %rax
0x48, 0x83, 0xe0, 0xf0, //0x00000118 andq $-16, %rax
0x4e, 0x8d, 0x64, 0x38, 0x10, //0x0000011c leaq $16(%rax,%r15), %r12
0x41, 0x83, 0xe0, 0x0f, //0x00000121 andl $15, %r8d
0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000125 movq $-1, %r11
0xc5, 0x7a, 0x6f, 0x05, 0xcc, 0xfe, 0xff, 0xff, //0x0000012c vmovdqu $-308(%rip), %xmm8 /* LCPI0_0+0(%rip) */
0xc5, 0x7a, 0x6f, 0x0d, 0xd4, 0xfe, 0xff, 0xff, //0x00000134 vmovdqu $-300(%rip), %xmm9 /* LCPI0_1+0(%rip) */
0xc5, 0x7a, 0x6f, 0x15, 0xdc, 0xfe, 0xff, 0xff, //0x0000013c vmovdqu $-292(%rip), %xmm10 /* LCPI0_2+0(%rip) */
0xc5, 0x7a, 0x6f, 0x1d, 0xe4, 0xfe, 0xff, 0xff, //0x00000144 vmovdqu $-284(%rip), %xmm11 /* LCPI0_3+0(%rip) */
0xc5, 0xfa, 0x6f, 0x25, 0xec, 0xfe, 0xff, 0xff, //0x0000014c vmovdqu $-276(%rip), %xmm4 /* LCPI0_4+0(%rip) */
0xc5, 0xfa, 0x6f, 0x2d, 0xf4, 0xfe, 0xff, 0xff, //0x00000154 vmovdqu $-268(%rip), %xmm5 /* LCPI0_5+0(%rip) */
0xc5, 0xfa, 0x6f, 0x35, 0xfc, 0xfe, 0xff, 0xff, //0x0000015c vmovdqu $-260(%rip), %xmm6 /* LCPI0_6+0(%rip) */
0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00000164 movq $-1, %r14
0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000016b movq $-1, %r10
0x4c, 0x89, 0xfb, //0x00000172 movq %r15, %rbx
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000175 .p2align 4, 0x90
//0x00000180 LBB0_10
0xc5, 0xfa, 0x6f, 0x3b, //0x00000180 vmovdqu (%rbx), %xmm7
0xc4, 0xc1, 0x41, 0x64, 0xc0, //0x00000184 vpcmpgtb %xmm8, %xmm7, %xmm0
0xc5, 0xb1, 0x64, 0xcf, //0x00000189 vpcmpgtb %xmm7, %xmm9, %xmm1
0xc5, 0xf9, 0xdb, 0xc1, //0x0000018d vpand %xmm1, %xmm0, %xmm0
0xc5, 0xa9, 0x74, 0xcf, //0x00000191 vpcmpeqb %xmm7, %xmm10, %xmm1
0xc5, 0xa1, 0x74, 0xd7, //0x00000195 vpcmpeqb %xmm7, %xmm11, %xmm2
0xc5, 0xe9, 0xeb, 0xc9, //0x00000199 vpor %xmm1, %xmm2, %xmm1
0xc5, 0xc1, 0xeb, 0xd4, //0x0000019d vpor %xmm4, %xmm7, %xmm2
0xc5, 0xe9, 0x74, 0xd6, //0x000001a1 vpcmpeqb %xmm6, %xmm2, %xmm2
0xc5, 0xc1, 0x74, 0xfd, //0x000001a5 vpcmpeqb %xmm5, %xmm7, %xmm7
0xc5, 0xe9, 0xeb, 0xdf, //0x000001a9 vpor %xmm7, %xmm2, %xmm3
0xc5, 0xf1, 0xeb, 0xc0, //0x000001ad vpor %xmm0, %xmm1, %xmm0
0xc5, 0xe1, 0xeb, 0xc0, //0x000001b1 vpor %xmm0, %xmm3, %xmm0
0xc5, 0xf9, 0xd7, 0xff, //0x000001b5 vpmovmskb %xmm7, %edi
0xc5, 0xf9, 0xd7, 0xf2, //0x000001b9 vpmovmskb %xmm2, %esi
0xc5, 0xf9, 0xd7, 0xc1, //0x000001bd vpmovmskb %xmm1, %eax
0xc5, 0xf9, 0xd7, 0xc8, //0x000001c1 vpmovmskb %xmm0, %ecx
0xba, 0xff, 0xff, 0xff, 0xff, //0x000001c5 movl $4294967295, %edx
0x48, 0x31, 0xd1, //0x000001ca xorq %rdx, %rcx
0x48, 0x0f, 0xbc, 0xc9, //0x000001cd bsfq %rcx, %rcx
0x83, 0xf9, 0x10, //0x000001d1 cmpl $16, %ecx
0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000001d4 je LBB0_12
0xba, 0xff, 0xff, 0xff, 0xff, //0x000001da movl $-1, %edx
0xd3, 0xe2, //0x000001df shll %cl, %edx
0xf7, 0xd2, //0x000001e1 notl %edx
0x21, 0xd7, //0x000001e3 andl %edx, %edi
0x21, 0xd6, //0x000001e5 andl %edx, %esi
0x21, 0xc2, //0x000001e7 andl %eax, %edx
0x89, 0xd0, //0x000001e9 movl %edx, %eax
//0x000001eb LBB0_12
0x44, 0x8d, 0x4f, 0xff, //0x000001eb leal $-1(%rdi), %r9d
0x41, 0x21, 0xf9, //0x000001ef andl %edi, %r9d
0x0f, 0x85, 0x26, 0x02, 0x00, 0x00, //0x000001f2 jne LBB0_13
0x8d, 0x56, 0xff, //0x000001f8 leal $-1(%rsi), %edx
0x21, 0xf2, //0x000001fb andl %esi, %edx
0x0f, 0x85, 0x10, 0x02, 0x00, 0x00, //0x000001fd jne LBB0_17
0x8d, 0x50, 0xff, //0x00000203 leal $-1(%rax), %edx
0x21, 0xc2, //0x00000206 andl %eax, %edx
0x0f, 0x85, 0x05, 0x02, 0x00, 0x00, //0x00000208 jne LBB0_17
0x85, 0xff, //0x0000020e testl %edi, %edi
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000210 je LBB0_22
0x48, 0x89, 0xda, //0x00000216 movq %rbx, %rdx
0x4c, 0x29, 0xfa, //0x00000219 subq %r15, %rdx
0x0f, 0xbc, 0xff, //0x0000021c bsfl %edi, %edi
0x48, 0x01, 0xd7, //0x0000021f addq %rdx, %rdi
0x49, 0x83, 0xfa, 0xff, //0x00000222 cmpq $-1, %r10
0x0f, 0x85, 0xfc, 0x01, 0x00, 0x00, //0x00000226 jne LBB0_15
0x49, 0x89, 0xfa, //0x0000022c movq %rdi, %r10
//0x0000022f LBB0_22
0x85, 0xf6, //0x0000022f testl %esi, %esi
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000231 je LBB0_25
0x48, 0x89, 0xda, //0x00000237 movq %rbx, %rdx
0x4c, 0x29, 0xfa, //0x0000023a subq %r15, %rdx
0x0f, 0xbc, 0xfe, //0x0000023d bsfl %esi, %edi
0x48, 0x01, 0xd7, //0x00000240 addq %rdx, %rdi
0x49, 0x83, 0xfe, 0xff, //0x00000243 cmpq $-1, %r14
0x0f, 0x85, 0xdb, 0x01, 0x00, 0x00, //0x00000247 jne LBB0_15
0x49, 0x89, 0xfe, //0x0000024d movq %rdi, %r14
//0x00000250 LBB0_25
0x85, 0xc0, //0x00000250 testl %eax, %eax
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000252 je LBB0_28
0x48, 0x89, 0xda, //0x00000258 movq %rbx, %rdx
0x4c, 0x29, 0xfa, //0x0000025b subq %r15, %rdx
0x0f, 0xbc, 0xf8, //0x0000025e bsfl %eax, %edi
0x48, 0x01, 0xd7, //0x00000261 addq %rdx, %rdi
0x49, 0x83, 0xfb, 0xff, //0x00000264 cmpq $-1, %r11
0x0f, 0x85, 0xba, 0x01, 0x00, 0x00, //0x00000268 jne LBB0_15
0x49, 0x89, 0xfb, //0x0000026e movq %rdi, %r11
//0x00000271 LBB0_28
0x83, 0xf9, 0x10, //0x00000271 cmpl $16, %ecx
0x0f, 0x85, 0xb2, 0x00, 0x00, 0x00, //0x00000274 jne LBB0_60
0x48, 0x83, 0xc3, 0x10, //0x0000027a addq $16, %rbx
0x49, 0x83, 0xc5, 0xf0, //0x0000027e addq $-16, %r13
0x49, 0x83, 0xfd, 0x0f, //0x00000282 cmpq $15, %r13
0x0f, 0x87, 0xf4, 0xfe, 0xff, 0xff, //0x00000286 ja LBB0_10
0x4d, 0x85, 0xc0, //0x0000028c testq %r8, %r8
0x48, 0x8b, 0x75, 0xc0, //0x0000028f movq $-64(%rbp), %rsi
0x48, 0x8b, 0x5d, 0xc8, //0x00000293 movq $-56(%rbp), %rbx
0x0f, 0x84, 0x9d, 0x00, 0x00, 0x00, //0x00000297 je LBB0_42
//0x0000029d LBB0_31
0x4b, 0x8d, 0x04, 0x04, //0x0000029d leaq (%r12,%r8), %rax
0x48, 0x8d, 0x0d, 0x1c, 0x02, 0x00, 0x00, //0x000002a1 leaq $540(%rip), %rcx /* LJTI0_0+0(%rip) */
0xe9, 0x0f, 0x00, 0x00, 0x00, //0x000002a8 jmp LBB0_32
0x90, 0x90, 0x90, //0x000002ad .p2align 4, 0x90
//0x000002b0 LBB0_40
0x49, 0x89, 0xd4, //0x000002b0 movq %rdx, %r12
0x49, 0xff, 0xc8, //0x000002b3 decq %r8
0x0f, 0x84, 0x8f, 0x01, 0x00, 0x00, //0x000002b6 je LBB0_41
//0x000002bc LBB0_32
0x41, 0x0f, 0xbe, 0x3c, 0x24, //0x000002bc movsbl (%r12), %edi
0x83, 0xc7, 0xd5, //0x000002c1 addl $-43, %edi
0x83, 0xff, 0x3a, //0x000002c4 cmpl $58, %edi
0x0f, 0x87, 0x6d, 0x00, 0x00, 0x00, //0x000002c7 ja LBB0_42
0x49, 0x8d, 0x54, 0x24, 0x01, //0x000002cd leaq $1(%r12), %rdx
0x48, 0x63, 0x3c, 0xb9, //0x000002d2 movslq (%rcx,%rdi,4), %rdi
0x48, 0x01, 0xcf, //0x000002d6 addq %rcx, %rdi
0xff, 0xe7, //0x000002d9 jmpq *%rdi
//0x000002db LBB0_38
0x48, 0x89, 0xd7, //0x000002db movq %rdx, %rdi
0x4c, 0x29, 0xff, //0x000002de subq %r15, %rdi
0x49, 0x83, 0xfb, 0xff, //0x000002e1 cmpq $-1, %r11
0x0f, 0x85, 0x95, 0x01, 0x00, 0x00, //0x000002e5 jne LBB0_61
0x48, 0xff, 0xcf, //0x000002eb decq %rdi
0x49, 0x89, 0xfb, //0x000002ee movq %rdi, %r11
0xe9, 0xba, 0xff, 0xff, 0xff, //0x000002f1 jmp LBB0_40
//0x000002f6 LBB0_36
0x48, 0x89, 0xd7, //0x000002f6 movq %rdx, %rdi
0x4c, 0x29, 0xff, //0x000002f9 subq %r15, %rdi
0x49, 0x83, 0xfe, 0xff, //0x000002fc cmpq $-1, %r14
0x0f, 0x85, 0x7a, 0x01, 0x00, 0x00, //0x00000300 jne LBB0_61
0x48, 0xff, 0xcf, //0x00000306 decq %rdi
0x49, 0x89, 0xfe, //0x00000309 movq %rdi, %r14
0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000030c jmp LBB0_40
//0x00000311 LBB0_34
0x48, 0x89, 0xd7, //0x00000311 movq %rdx, %rdi
0x4c, 0x29, 0xff, //0x00000314 subq %r15, %rdi
0x49, 0x83, 0xfa, 0xff, //0x00000317 cmpq $-1, %r10
0x0f, 0x85, 0x5f, 0x01, 0x00, 0x00, //0x0000031b jne LBB0_61
0x48, 0xff, 0xcf, //0x00000321 decq %rdi
0x49, 0x89, 0xfa, //0x00000324 movq %rdi, %r10
0xe9, 0x84, 0xff, 0xff, 0xff, //0x00000327 jmp LBB0_40
//0x0000032c LBB0_60
0x48, 0x01, 0xcb, //0x0000032c addq %rcx, %rbx
0x49, 0x89, 0xdc, //0x0000032f movq %rbx, %r12
0x48, 0x8b, 0x75, 0xc0, //0x00000332 movq $-64(%rbp), %rsi
0x48, 0x8b, 0x5d, 0xc8, //0x00000336 movq $-56(%rbp), %rbx
//0x0000033a LBB0_42
0x48, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000033a movq $-1, %rdi
0x4d, 0x85, 0xf6, //0x00000341 testq %r14, %r14
0x0f, 0x84, 0x14, 0x01, 0x00, 0x00, //0x00000344 je LBB0_57
//0x0000034a LBB0_43
0x4d, 0x85, 0xdb, //0x0000034a testq %r11, %r11
0x0f, 0x84, 0x0b, 0x01, 0x00, 0x00, //0x0000034d je LBB0_57
0x4d, 0x85, 0xd2, //0x00000353 testq %r10, %r10
0x48, 0x8b, 0x55, 0xd0, //0x00000356 movq $-48(%rbp), %rdx
0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, //0x0000035a je LBB0_57
0x4d, 0x29, 0xfc, //0x00000360 subq %r15, %r12
0x49, 0x8d, 0x44, 0x24, 0xff, //0x00000363 leaq $-1(%r12), %rax
0x49, 0x39, 0xc6, //0x00000368 cmpq %rax, %r14
0x0f, 0x84, 0x3c, 0x00, 0x00, 0x00, //0x0000036b je LBB0_48
0x49, 0x39, 0xc2, //0x00000371 cmpq %rax, %r10
0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000374 je LBB0_48
0x49, 0x39, 0xc3, //0x0000037a cmpq %rax, %r11
0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x0000037d je LBB0_48
0x4d, 0x85, 0xdb, //0x00000383 testq %r11, %r11
0x0f, 0x8e, 0x35, 0x00, 0x00, 0x00, //0x00000386 jle LBB0_52
0x49, 0x8d, 0x43, 0xff, //0x0000038c leaq $-1(%r11), %rax
0x49, 0x39, 0xc6, //0x00000390 cmpq %rax, %r14
0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00000393 je LBB0_52
0x49, 0xf7, 0xd3, //0x00000399 notq %r11
0x4c, 0x89, 0xdf, //0x0000039c movq %r11, %rdi
0x48, 0x85, 0xff, //0x0000039f testq %rdi, %rdi
0x0f, 0x89, 0x98, 0x00, 0x00, 0x00, //0x000003a2 jns LBB0_58
0xe9, 0xb1, 0x00, 0x00, 0x00, //0x000003a8 jmp LBB0_57
//0x000003ad LBB0_48
0x49, 0xf7, 0xdc, //0x000003ad negq %r12
0x4c, 0x89, 0xe7, //0x000003b0 movq %r12, %rdi
0x48, 0x85, 0xff, //0x000003b3 testq %rdi, %rdi
0x0f, 0x89, 0x84, 0x00, 0x00, 0x00, //0x000003b6 jns LBB0_58
0xe9, 0x9d, 0x00, 0x00, 0x00, //0x000003bc jmp LBB0_57
//0x000003c1 LBB0_52
0x4c, 0x89, 0xd0, //0x000003c1 movq %r10, %rax
0x4c, 0x09, 0xf0, //0x000003c4 orq %r14, %rax
0x4d, 0x39, 0xf2, //0x000003c7 cmpq %r14, %r10
0x0f, 0x8c, 0x1d, 0x00, 0x00, 0x00, //0x000003ca jl LBB0_55
0x48, 0x85, 0xc0, //0x000003d0 testq %rax, %rax
0x0f, 0x88, 0x14, 0x00, 0x00, 0x00, //0x000003d3 js LBB0_55
0x49, 0xf7, 0xd2, //0x000003d9 notq %r10
0x4c, 0x89, 0xd7, //0x000003dc movq %r10, %rdi
0x48, 0x85, 0xff, //0x000003df testq %rdi, %rdi
0x0f, 0x89, 0x58, 0x00, 0x00, 0x00, //0x000003e2 jns LBB0_58
0xe9, 0x71, 0x00, 0x00, 0x00, //0x000003e8 jmp LBB0_57
//0x000003ed LBB0_55
0x48, 0x85, 0xc0, //0x000003ed testq %rax, %rax
0x49, 0x8d, 0x46, 0xff, //0x000003f0 leaq $-1(%r14), %rax
0x49, 0xf7, 0xd6, //0x000003f4 notq %r14
0x4d, 0x0f, 0x48, 0xf4, //0x000003f7 cmovsq %r12, %r14
0x49, 0x39, 0xc2, //0x000003fb cmpq %rax, %r10
0x4d, 0x0f, 0x45, 0xf4, //0x000003fe cmovneq %r12, %r14
0x4c, 0x89, 0xf7, //0x00000402 movq %r14, %rdi
0x48, 0x85, 0xff, //0x00000405 testq %rdi, %rdi
0x0f, 0x89, 0x32, 0x00, 0x00, 0x00, //0x00000408 jns LBB0_58
0xe9, 0x4b, 0x00, 0x00, 0x00, //0x0000040e jmp LBB0_57
//0x00000413 LBB0_17
0x4c, 0x29, 0xfb, //0x00000413 subq %r15, %rbx
0x0f, 0xbc, 0xfa, //0x00000416 bsfl %edx, %edi
0xe9, 0x07, 0x00, 0x00, 0x00, //0x00000419 jmp LBB0_14
//0x0000041e LBB0_13
0x4c, 0x29, 0xfb, //0x0000041e subq %r15, %rbx
0x41, 0x0f, 0xbc, 0xf9, //0x00000421 bsfl %r9d, %edi
//0x00000425 LBB0_14
0x48, 0x01, 0xdf, //0x00000425 addq %rbx, %rdi
//0x00000428 LBB0_15
0x48, 0xf7, 0xd7, //0x00000428 notq %rdi
0x48, 0x8b, 0x75, 0xc0, //0x0000042b movq $-64(%rbp), %rsi
0x48, 0x8b, 0x5d, 0xc8, //0x0000042f movq $-56(%rbp), %rbx
0x48, 0x8b, 0x55, 0xd0, //0x00000433 movq $-48(%rbp), %rdx
0x48, 0x85, 0xff, //0x00000437 testq %rdi, %rdi
0x0f, 0x88, 0x1e, 0x00, 0x00, 0x00, //0x0000043a js LBB0_57
//0x00000440 LBB0_58
0x49, 0x01, 0xff, //0x00000440 addq %rdi, %r15
0x48, 0x89, 0xd0, //0x00000443 movq %rdx, %rax
0xe9, 0x20, 0x00, 0x00, 0x00, //0x00000446 jmp LBB0_59
//0x0000044b LBB0_41
0x49, 0x89, 0xc4, //0x0000044b movq %rax, %r12
0x48, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000044e movq $-1, %rdi
0x4d, 0x85, 0xf6, //0x00000455 testq %r14, %r14
0x0f, 0x85, 0xec, 0xfe, 0xff, 0xff, //0x00000458 jne LBB0_43
//0x0000045e LBB0_57
0x48, 0xf7, 0xd7, //0x0000045e notq %rdi
0x49, 0x01, 0xff, //0x00000461 addq %rdi, %r15
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000464 movq $-2, %rax
//0x0000046b LBB0_59
0x49, 0x29, 0xdf, //0x0000046b subq %rbx, %r15
0x4c, 0x89, 0x3e, //0x0000046e movq %r15, (%rsi)
0x48, 0x83, 0xc4, 0x18, //0x00000471 addq $24, %rsp
0x5b, //0x00000475 popq %rbx
0x41, 0x5c, //0x00000476 popq %r12
0x41, 0x5d, //0x00000478 popq %r13
0x41, 0x5e, //0x0000047a popq %r14
0x41, 0x5f, //0x0000047c popq %r15
0x5d, //0x0000047e popq %rbp
0xc3, //0x0000047f retq
//0x00000480 LBB0_61
0x48, 0xf7, 0xdf, //0x00000480 negq %rdi
0x48, 0x8b, 0x55, 0xd0, //0x00000483 movq $-48(%rbp), %rdx
0x48, 0x85, 0xff, //0x00000487 testq %rdi, %rdi
0x0f, 0x89, 0xb0, 0xff, 0xff, 0xff, //0x0000048a jns LBB0_58
0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00000490 jmp LBB0_57
//0x00000495 LBB0_1
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000495 movq $-1, %rax
0xe9, 0xca, 0xff, 0xff, 0xff, //0x0000049c jmp LBB0_59
//0x000004a1 LBB0_8
0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000004a1 movq $-1, %r10
0x4d, 0x89, 0xfc, //0x000004a8 movq %r15, %r12
0x4d, 0x89, 0xe8, //0x000004ab movq %r13, %r8
0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000004ae movq $-1, %r14
0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000004b5 movq $-1, %r11
0xe9, 0xdc, 0xfd, 0xff, 0xff, //0x000004bc jmp LBB0_31
0x90, 0x90, 0x90, //0x000004c1 .p2align 2, 0x90
// // .set L0_0_set_38, LBB0_38-LJTI0_0
// // .set L0_0_set_42, LBB0_42-LJTI0_0
// // .set L0_0_set_34, LBB0_34-LJTI0_0
// // .set L0_0_set_40, LBB0_40-LJTI0_0
// // .set L0_0_set_36, LBB0_36-LJTI0_0
//0x000004c4 LJTI0_0
0x17, 0xfe, 0xff, 0xff, //0x000004c4 .long L0_0_set_38
0x76, 0xfe, 0xff, 0xff, //0x000004c8 .long L0_0_set_42
0x17, 0xfe, 0xff, 0xff, //0x000004cc .long L0_0_set_38
0x4d, 0xfe, 0xff, 0xff, //0x000004d0 .long L0_0_set_34
0x76, 0xfe, 0xff, 0xff, //0x000004d4 .long L0_0_set_42
0xec, 0xfd, 0xff, 0xff, //0x000004d8 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004dc .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004e0 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004e4 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004e8 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004ec .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004f0 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004f4 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004f8 .long L0_0_set_40
0xec, 0xfd, 0xff, 0xff, //0x000004fc .long L0_0_set_40
0x76, 0xfe, 0xff, 0xff, //0x00000500 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000504 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000508 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000050c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000510 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000514 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000518 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000051c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000520 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000524 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000528 .long L0_0_set_42
0x32, 0xfe, 0xff, 0xff, //0x0000052c .long L0_0_set_36
0x76, 0xfe, 0xff, 0xff, //0x00000530 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000534 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000538 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000053c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000540 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000544 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000548 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000054c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000550 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000554 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000558 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000055c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000560 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000564 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000568 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000056c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000570 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000574 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000578 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000057c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000580 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000584 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000588 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000058c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000590 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000594 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x00000598 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x0000059c .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x000005a0 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x000005a4 .long L0_0_set_42
0x76, 0xfe, 0xff, 0xff, //0x000005a8 .long L0_0_set_42
0x32, 0xfe, 0xff, 0xff, //0x000005ac .long L0_0_set_36
//0x000005b0 .p2align 2, 0x00
//0x000005b0 _MASK_USE_NUMBER
0x02, 0x00, 0x00, 0x00, //0x000005b0 .long 2
}

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the License );
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var F_skip_object func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
var S_skip_object uintptr
//go:nosplit
func skip_object(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return F_skip_object(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__skip_object = 160
)
const (
_stack__skip_object = 152
)
const (
_size__skip_object = 9524
)
var (
_pcsp__skip_object = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{8962, 152},
{8966, 48},
{8967, 40},
{8969, 32},
{8971, 24},
{8973, 16},
{8975, 8},
{8976, 0},
{9524, 152},
}
)
var _cfunc_skip_object = []loader.CFunc{
{"_skip_object_entry", 0, _entry__skip_object, 0, nil},
{"_skip_object", _entry__skip_object, _size__skip_object, _stack__skip_object, _pcsp__skip_object},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var F_skip_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
var S_skip_one uintptr
//go:nosplit
func skip_one(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return F_skip_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_skip_one_fast func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
var S_skip_one_fast uintptr
//go:nosplit
func skip_one_fast(s *string, p *int) (ret int) {
return F_skip_one_fast(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
}

View File

@ -0,0 +1,45 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__skip_one_fast = 128
)
const (
_stack__skip_one_fast = 176
)
const (
_size__skip_one_fast = 3016
)
var (
_pcsp__skip_one_fast = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{658, 176},
{659, 168},
{661, 160},
{663, 152},
{665, 144},
{667, 136},
{671, 128},
{3016, 176},
}
)
var _cfunc_skip_one_fast = []loader.CFunc{
{"_skip_one_fast_entry", 0, _entry__skip_one_fast, 0, nil},
{"_skip_one_fast", _entry__skip_one_fast, _size__skip_one_fast, _stack__skip_one_fast, _pcsp__skip_one_fast},
}

View File

@ -0,0 +1,945 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_skip_one_fast = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, // QUAD $0x2c2c2c2c2c2c2c2c; QUAD $0x2c2c2c2c2c2c2c2c // .space 16, ',,,,,,,,,,,,,,,,'
//0x00000010 LCPI0_1
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //0x00000010 QUAD $0x2020202020202020; QUAD $0x2020202020202020 // .space 16, ' '
//0x00000020 LCPI0_2
0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, //0x00000020 QUAD $0x7d7d7d7d7d7d7d7d; QUAD $0x7d7d7d7d7d7d7d7d // .space 16, '}}}}}}}}}}}}}}}}'
//0x00000030 LCPI0_3
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, //0x00000030 QUAD $0x2222222222222222; QUAD $0x2222222222222222 // .space 16, '""""""""""""""""'
//0x00000040 LCPI0_4
0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, //0x00000040 QUAD $0x5c5c5c5c5c5c5c5c; QUAD $0x5c5c5c5c5c5c5c5c // .space 16, '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
//0x00000050 LCPI0_5
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, //0x00000050 QUAD $0x7b7b7b7b7b7b7b7b; QUAD $0x7b7b7b7b7b7b7b7b // .space 16, '{{{{{{{{{{{{{{{{'
//0x00000060 LCPI0_6
0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, //0x00000060 QUAD $0x5b5b5b5b5b5b5b5b; QUAD $0x5b5b5b5b5b5b5b5b // .space 16, '[[[[[[[[[[[[[[[['
//0x00000070 LCPI0_7
0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, //0x00000070 QUAD $0x5d5d5d5d5d5d5d5d; QUAD $0x5d5d5d5d5d5d5d5d // .space 16, ']]]]]]]]]]]]]]]]'
//0x00000080 .p2align 4, 0x90
//0x00000080 _skip_one_fast
0x55, //0x00000080 pushq %rbp
0x48, 0x89, 0xe5, //0x00000081 movq %rsp, %rbp
0x41, 0x57, //0x00000084 pushq %r15
0x41, 0x56, //0x00000086 pushq %r14
0x41, 0x55, //0x00000088 pushq %r13
0x41, 0x54, //0x0000008a pushq %r12
0x53, //0x0000008c pushq %rbx
0x48, 0x81, 0xec, 0x80, 0x00, 0x00, 0x00, //0x0000008d subq $128, %rsp
0x4c, 0x8b, 0x37, //0x00000094 movq (%rdi), %r14
0x4c, 0x8b, 0x47, 0x08, //0x00000097 movq $8(%rdi), %r8
0x48, 0x8b, 0x16, //0x0000009b movq (%rsi), %rdx
0x48, 0x89, 0xd0, //0x0000009e movq %rdx, %rax
0x4c, 0x29, 0xc0, //0x000000a1 subq %r8, %rax
0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x000000a4 jae LBB0_5
0x41, 0x8a, 0x0c, 0x16, //0x000000aa movb (%r14,%rdx), %cl
0x80, 0xf9, 0x0d, //0x000000ae cmpb $13, %cl
0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000000b1 je LBB0_5
0x80, 0xf9, 0x20, //0x000000b7 cmpb $32, %cl
0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000000ba je LBB0_5
0x80, 0xc1, 0xf7, //0x000000c0 addb $-9, %cl
0x80, 0xf9, 0x01, //0x000000c3 cmpb $1, %cl
0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x000000c6 jbe LBB0_5
0x49, 0x89, 0xd3, //0x000000cc movq %rdx, %r11
0xe9, 0x2b, 0x01, 0x00, 0x00, //0x000000cf jmp LBB0_27
//0x000000d4 LBB0_5
0x4c, 0x8d, 0x5a, 0x01, //0x000000d4 leaq $1(%rdx), %r11
0x4d, 0x39, 0xc3, //0x000000d8 cmpq %r8, %r11
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x000000db jae LBB0_9
0x43, 0x8a, 0x0c, 0x1e, //0x000000e1 movb (%r14,%r11), %cl
0x80, 0xf9, 0x0d, //0x000000e5 cmpb $13, %cl
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000000e8 je LBB0_9
0x80, 0xf9, 0x20, //0x000000ee cmpb $32, %cl
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000000f1 je LBB0_9
0x80, 0xc1, 0xf7, //0x000000f7 addb $-9, %cl
0x80, 0xf9, 0x01, //0x000000fa cmpb $1, %cl
0x0f, 0x87, 0xfc, 0x00, 0x00, 0x00, //0x000000fd ja LBB0_27
//0x00000103 LBB0_9
0x4c, 0x8d, 0x5a, 0x02, //0x00000103 leaq $2(%rdx), %r11
0x4d, 0x39, 0xc3, //0x00000107 cmpq %r8, %r11
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x0000010a jae LBB0_13
0x43, 0x8a, 0x0c, 0x1e, //0x00000110 movb (%r14,%r11), %cl
0x80, 0xf9, 0x0d, //0x00000114 cmpb $13, %cl
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000117 je LBB0_13
0x80, 0xf9, 0x20, //0x0000011d cmpb $32, %cl
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00000120 je LBB0_13
0x80, 0xc1, 0xf7, //0x00000126 addb $-9, %cl
0x80, 0xf9, 0x01, //0x00000129 cmpb $1, %cl
0x0f, 0x87, 0xcd, 0x00, 0x00, 0x00, //0x0000012c ja LBB0_27
//0x00000132 LBB0_13
0x4c, 0x8d, 0x5a, 0x03, //0x00000132 leaq $3(%rdx), %r11
0x4d, 0x39, 0xc3, //0x00000136 cmpq %r8, %r11
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00000139 jae LBB0_17
0x43, 0x8a, 0x0c, 0x1e, //0x0000013f movb (%r14,%r11), %cl
0x80, 0xf9, 0x0d, //0x00000143 cmpb $13, %cl
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000146 je LBB0_17
0x80, 0xf9, 0x20, //0x0000014c cmpb $32, %cl
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000014f je LBB0_17
0x80, 0xc1, 0xf7, //0x00000155 addb $-9, %cl
0x80, 0xf9, 0x01, //0x00000158 cmpb $1, %cl
0x0f, 0x87, 0x9e, 0x00, 0x00, 0x00, //0x0000015b ja LBB0_27
//0x00000161 LBB0_17
0x48, 0x8d, 0x4a, 0x04, //0x00000161 leaq $4(%rdx), %rcx
0x49, 0x39, 0xc8, //0x00000165 cmpq %rcx, %r8
0x0f, 0x86, 0x4b, 0x00, 0x00, 0x00, //0x00000168 jbe LBB0_23
0x49, 0x39, 0xc8, //0x0000016e cmpq %rcx, %r8
0x0f, 0x84, 0x51, 0x00, 0x00, 0x00, //0x00000171 je LBB0_24
0x4b, 0x8d, 0x0c, 0x06, //0x00000177 leaq (%r14,%r8), %rcx
0x48, 0x83, 0xc0, 0x04, //0x0000017b addq $4, %rax
0x4e, 0x8d, 0x5c, 0x32, 0x05, //0x0000017f leaq $5(%rdx,%r14), %r11
0x48, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000184 movabsq $4294977024, %rdx
0x90, 0x90, //0x0000018e .p2align 4, 0x90
//0x00000190 LBB0_20
0x41, 0x0f, 0xbe, 0x5b, 0xff, //0x00000190 movsbl $-1(%r11), %ebx
0x83, 0xfb, 0x20, //0x00000195 cmpl $32, %ebx
0x0f, 0x87, 0x48, 0x00, 0x00, 0x00, //0x00000198 ja LBB0_26
0x48, 0x0f, 0xa3, 0xda, //0x0000019e btq %rbx, %rdx
0x0f, 0x83, 0x3e, 0x00, 0x00, 0x00, //0x000001a2 jae LBB0_26
0x49, 0xff, 0xc3, //0x000001a8 incq %r11
0x48, 0xff, 0xc0, //0x000001ab incq %rax
0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000001ae jne LBB0_20
0xe9, 0x12, 0x00, 0x00, 0x00, //0x000001b4 jmp LBB0_25
//0x000001b9 LBB0_23
0x48, 0x89, 0x0e, //0x000001b9 movq %rcx, (%rsi)
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001bc movq $-1, %rax
0xe9, 0x46, 0x01, 0x00, 0x00, //0x000001c3 jmp LBB0_45
//0x000001c8 LBB0_24
0x4c, 0x01, 0xf1, //0x000001c8 addq %r14, %rcx
//0x000001cb LBB0_25
0x4c, 0x29, 0xf1, //0x000001cb subq %r14, %rcx
0x49, 0x89, 0xcb, //0x000001ce movq %rcx, %r11
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001d1 movq $-1, %rax
0x4d, 0x39, 0xc3, //0x000001d8 cmpq %r8, %r11
0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x000001db jb LBB0_27
0xe9, 0x28, 0x01, 0x00, 0x00, //0x000001e1 jmp LBB0_45
//0x000001e6 LBB0_26
0x4c, 0x89, 0xf0, //0x000001e6 movq %r14, %rax
0x48, 0xf7, 0xd0, //0x000001e9 notq %rax
0x49, 0x01, 0xc3, //0x000001ec addq %rax, %r11
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001ef movq $-1, %rax
0x4d, 0x39, 0xc3, //0x000001f6 cmpq %r8, %r11
0x0f, 0x83, 0x0f, 0x01, 0x00, 0x00, //0x000001f9 jae LBB0_45
//0x000001ff LBB0_27
0x49, 0x8d, 0x5b, 0x01, //0x000001ff leaq $1(%r11), %rbx
0x48, 0x89, 0x1e, //0x00000203 movq %rbx, (%rsi)
0x43, 0x0f, 0xbe, 0x0c, 0x1e, //0x00000206 movsbl (%r14,%r11), %ecx
0x83, 0xf9, 0x7b, //0x0000020b cmpl $123, %ecx
0x0f, 0x87, 0x1f, 0x01, 0x00, 0x00, //0x0000020e ja LBB0_47
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000214 movq $-1, %rax
0x48, 0x8d, 0x15, 0x26, 0x0a, 0x00, 0x00, //0x0000021b leaq $2598(%rip), %rdx /* LJTI0_0+0(%rip) */
0x48, 0x63, 0x0c, 0x8a, //0x00000222 movslq (%rdx,%rcx,4), %rcx
0x48, 0x01, 0xd1, //0x00000226 addq %rdx, %rcx
0xff, 0xe1, //0x00000229 jmpq *%rcx
//0x0000022b LBB0_29
0x48, 0x8b, 0x4f, 0x08, //0x0000022b movq $8(%rdi), %rcx
0x48, 0x89, 0xc8, //0x0000022f movq %rcx, %rax
0x48, 0x29, 0xd8, //0x00000232 subq %rbx, %rax
0x4c, 0x01, 0xf3, //0x00000235 addq %r14, %rbx
0x48, 0x83, 0xf8, 0x10, //0x00000238 cmpq $16, %rax
0x0f, 0x82, 0x77, 0x00, 0x00, 0x00, //0x0000023c jb LBB0_34
0x4c, 0x29, 0xd9, //0x00000242 subq %r11, %rcx
0x48, 0x83, 0xc1, 0xef, //0x00000245 addq $-17, %rcx
0x48, 0x89, 0xca, //0x00000249 movq %rcx, %rdx
0x48, 0x83, 0xe2, 0xf0, //0x0000024c andq $-16, %rdx
0x4c, 0x01, 0xda, //0x00000250 addq %r11, %rdx
0x49, 0x8d, 0x54, 0x16, 0x11, //0x00000253 leaq $17(%r14,%rdx), %rdx
0x83, 0xe1, 0x0f, //0x00000258 andl $15, %ecx
0xc5, 0xfa, 0x6f, 0x05, 0x9d, 0xfd, 0xff, 0xff, //0x0000025b vmovdqu $-611(%rip), %xmm0 /* LCPI0_0+0(%rip) */
0xc5, 0xfa, 0x6f, 0x0d, 0xa5, 0xfd, 0xff, 0xff, //0x00000263 vmovdqu $-603(%rip), %xmm1 /* LCPI0_1+0(%rip) */
0xc5, 0xfa, 0x6f, 0x15, 0xad, 0xfd, 0xff, 0xff, //0x0000026b vmovdqu $-595(%rip), %xmm2 /* LCPI0_2+0(%rip) */
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000273 .p2align 4, 0x90
//0x00000280 LBB0_31
0xc5, 0xfa, 0x6f, 0x1b, //0x00000280 vmovdqu (%rbx), %xmm3
0xc5, 0xe1, 0x74, 0xe0, //0x00000284 vpcmpeqb %xmm0, %xmm3, %xmm4
0xc5, 0xe1, 0xeb, 0xd9, //0x00000288 vpor %xmm1, %xmm3, %xmm3
0xc5, 0xe1, 0x74, 0xda, //0x0000028c vpcmpeqb %xmm2, %xmm3, %xmm3
0xc5, 0xe1, 0xeb, 0xdc, //0x00000290 vpor %xmm4, %xmm3, %xmm3
0xc5, 0xf9, 0xd7, 0xfb, //0x00000294 vpmovmskb %xmm3, %edi
0x66, 0x85, 0xff, //0x00000298 testw %di, %di
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x0000029b jne LBB0_42
0x48, 0x83, 0xc3, 0x10, //0x000002a1 addq $16, %rbx
0x48, 0x83, 0xc0, 0xf0, //0x000002a5 addq $-16, %rax
0x48, 0x83, 0xf8, 0x0f, //0x000002a9 cmpq $15, %rax
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x000002ad ja LBB0_31
0x48, 0x89, 0xc8, //0x000002b3 movq %rcx, %rax
0x48, 0x89, 0xd3, //0x000002b6 movq %rdx, %rbx
//0x000002b9 LBB0_34
0x48, 0x85, 0xc0, //0x000002b9 testq %rax, %rax
0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x000002bc je LBB0_41
0x48, 0x8d, 0x0c, 0x03, //0x000002c2 leaq (%rbx,%rax), %rcx
//0x000002c6 LBB0_36
0x0f, 0xb6, 0x13, //0x000002c6 movzbl (%rbx), %edx
0x80, 0xfa, 0x2c, //0x000002c9 cmpb $44, %dl
0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000002cc je LBB0_41
0x80, 0xfa, 0x7d, //0x000002d2 cmpb $125, %dl
0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x000002d5 je LBB0_41
0x80, 0xfa, 0x5d, //0x000002db cmpb $93, %dl
0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000002de je LBB0_41
0x48, 0xff, 0xc3, //0x000002e4 incq %rbx
0x48, 0xff, 0xc8, //0x000002e7 decq %rax
0x0f, 0x85, 0xd6, 0xff, 0xff, 0xff, //0x000002ea jne LBB0_36
0x48, 0x89, 0xcb, //0x000002f0 movq %rcx, %rbx
//0x000002f3 LBB0_41
0x4c, 0x29, 0xf3, //0x000002f3 subq %r14, %rbx
0xe9, 0x0d, 0x00, 0x00, 0x00, //0x000002f6 jmp LBB0_43
//0x000002fb LBB0_42
0x0f, 0xb7, 0xc7, //0x000002fb movzwl %di, %eax
0x48, 0x0f, 0xbc, 0xc0, //0x000002fe bsfq %rax, %rax
0x4c, 0x29, 0xf3, //0x00000302 subq %r14, %rbx
0x48, 0x01, 0xc3, //0x00000305 addq %rax, %rbx
//0x00000308 LBB0_43
0x48, 0x89, 0x1e, //0x00000308 movq %rbx, (%rsi)
//0x0000030b LBB0_44
0x4c, 0x89, 0xd8, //0x0000030b movq %r11, %rax
//0x0000030e LBB0_45
0x48, 0x8d, 0x65, 0xd8, //0x0000030e leaq $-40(%rbp), %rsp
0x5b, //0x00000312 popq %rbx
0x41, 0x5c, //0x00000313 popq %r12
0x41, 0x5d, //0x00000315 popq %r13
0x41, 0x5e, //0x00000317 popq %r14
0x41, 0x5f, //0x00000319 popq %r15
0x5d, //0x0000031b popq %rbp
0xc5, 0xf8, 0x77, //0x0000031c vzeroupper
0xc3, //0x0000031f retq
//0x00000320 LBB0_46
0x49, 0x8d, 0x4b, 0x04, //0x00000320 leaq $4(%r11), %rcx
0x48, 0x3b, 0x4f, 0x08, //0x00000324 cmpq $8(%rdi), %rcx
0x0f, 0x87, 0xe0, 0xff, 0xff, 0xff, //0x00000328 ja LBB0_45
0xe9, 0xa6, 0x04, 0x00, 0x00, //0x0000032e jmp LBB0_83
//0x00000333 LBB0_47
0x4c, 0x89, 0x1e, //0x00000333 movq %r11, (%rsi)
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000336 movq $-2, %rax
0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000033d jmp LBB0_45
//0x00000342 LBB0_48
0x4c, 0x8b, 0x47, 0x08, //0x00000342 movq $8(%rdi), %r8
0x4d, 0x89, 0xc7, //0x00000346 movq %r8, %r15
0x49, 0x29, 0xdf, //0x00000349 subq %rbx, %r15
0x49, 0x83, 0xff, 0x20, //0x0000034c cmpq $32, %r15
0x0f, 0x8c, 0xbb, 0x08, 0x00, 0x00, //0x00000350 jl LBB0_117
0x41, 0xb9, 0xff, 0xff, 0xff, 0xff, //0x00000356 movl $4294967295, %r9d
0x4f, 0x8d, 0x14, 0x1e, //0x0000035c leaq (%r14,%r11), %r10
0x4d, 0x29, 0xd8, //0x00000360 subq %r11, %r8
0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x00000363 movl $31, %r13d
0x45, 0x31, 0xff, //0x00000369 xorl %r15d, %r15d
0xc5, 0xfa, 0x6f, 0x05, 0xbc, 0xfc, 0xff, 0xff, //0x0000036c vmovdqu $-836(%rip), %xmm0 /* LCPI0_3+0(%rip) */
0xc5, 0xfa, 0x6f, 0x0d, 0xc4, 0xfc, 0xff, 0xff, //0x00000374 vmovdqu $-828(%rip), %xmm1 /* LCPI0_4+0(%rip) */
0x45, 0x31, 0xe4, //0x0000037c xorl %r12d, %r12d
0xe9, 0x2e, 0x00, 0x00, 0x00, //0x0000037f jmp LBB0_50
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000384 .p2align 4, 0x90
//0x00000390 LBB0_52
0x45, 0x31, 0xe4, //0x00000390 xorl %r12d, %r12d
0x85, 0xc9, //0x00000393 testl %ecx, %ecx
0x0f, 0x85, 0x9e, 0x00, 0x00, 0x00, //0x00000395 jne LBB0_110
//0x0000039b LBB0_53
0x49, 0x83, 0xc7, 0x20, //0x0000039b addq $32, %r15
0x4b, 0x8d, 0x4c, 0x28, 0xe0, //0x0000039f leaq $-32(%r8,%r13), %rcx
0x49, 0x83, 0xc5, 0xe0, //0x000003a4 addq $-32, %r13
0x48, 0x83, 0xf9, 0x3f, //0x000003a8 cmpq $63, %rcx
0x0f, 0x8e, 0xdc, 0x07, 0x00, 0x00, //0x000003ac jle LBB0_54
//0x000003b2 LBB0_50
0xc4, 0x81, 0x7a, 0x6f, 0x54, 0x3a, 0x01, //0x000003b2 vmovdqu $1(%r10,%r15), %xmm2
0xc4, 0x81, 0x7a, 0x6f, 0x5c, 0x3a, 0x11, //0x000003b9 vmovdqu $17(%r10,%r15), %xmm3
0xc5, 0xe9, 0x74, 0xe0, //0x000003c0 vpcmpeqb %xmm0, %xmm2, %xmm4
0xc5, 0xf9, 0xd7, 0xfc, //0x000003c4 vpmovmskb %xmm4, %edi
0xc5, 0xe1, 0x74, 0xe0, //0x000003c8 vpcmpeqb %xmm0, %xmm3, %xmm4
0xc5, 0xf9, 0xd7, 0xcc, //0x000003cc vpmovmskb %xmm4, %ecx
0x48, 0xc1, 0xe1, 0x10, //0x000003d0 shlq $16, %rcx
0x48, 0x09, 0xf9, //0x000003d4 orq %rdi, %rcx
0xc5, 0xe9, 0x74, 0xd1, //0x000003d7 vpcmpeqb %xmm1, %xmm2, %xmm2
0xc5, 0xf9, 0xd7, 0xda, //0x000003db vpmovmskb %xmm2, %ebx
0xc5, 0xe1, 0x74, 0xd1, //0x000003df vpcmpeqb %xmm1, %xmm3, %xmm2
0xc5, 0xf9, 0xd7, 0xfa, //0x000003e3 vpmovmskb %xmm2, %edi
0x48, 0xc1, 0xe7, 0x10, //0x000003e7 shlq $16, %rdi
0x48, 0x09, 0xdf, //0x000003eb orq %rbx, %rdi
0x48, 0x89, 0xfb, //0x000003ee movq %rdi, %rbx
0x4c, 0x09, 0xe3, //0x000003f1 orq %r12, %rbx
0x0f, 0x84, 0x96, 0xff, 0xff, 0xff, //0x000003f4 je LBB0_52
0x44, 0x89, 0xe3, //0x000003fa movl %r12d, %ebx
0x44, 0x31, 0xcb, //0x000003fd xorl %r9d, %ebx
0x21, 0xdf, //0x00000400 andl %ebx, %edi
0x8d, 0x1c, 0x3f, //0x00000402 leal (%rdi,%rdi), %ebx
0x44, 0x09, 0xe3, //0x00000405 orl %r12d, %ebx
0x41, 0x8d, 0x91, 0xab, 0xaa, 0xaa, 0xaa, //0x00000408 leal $-1431655765(%r9), %edx
0x31, 0xda, //0x0000040f xorl %ebx, %edx
0x21, 0xfa, //0x00000411 andl %edi, %edx
0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000413 andl $-1431655766, %edx
0x45, 0x31, 0xe4, //0x00000419 xorl %r12d, %r12d
0x01, 0xfa, //0x0000041c addl %edi, %edx
0x41, 0x0f, 0x92, 0xc4, //0x0000041e setb %r12b
0x01, 0xd2, //0x00000422 addl %edx, %edx
0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000424 xorl $1431655765, %edx
0x21, 0xda, //0x0000042a andl %ebx, %edx
0x44, 0x31, 0xca, //0x0000042c xorl %r9d, %edx
0x21, 0xd1, //0x0000042f andl %edx, %ecx
0x85, 0xc9, //0x00000431 testl %ecx, %ecx
0x0f, 0x84, 0x62, 0xff, 0xff, 0xff, //0x00000433 je LBB0_53
//0x00000439 LBB0_110
0x48, 0x0f, 0xbc, 0xc1, //0x00000439 bsfq %rcx, %rax
0x49, 0x01, 0xc2, //0x0000043d addq %rax, %r10
0x4d, 0x01, 0xfa, //0x00000440 addq %r15, %r10
0x4d, 0x29, 0xf2, //0x00000443 subq %r14, %r10
0x49, 0x83, 0xc2, 0x02, //0x00000446 addq $2, %r10
0x4c, 0x89, 0x16, //0x0000044a movq %r10, (%rsi)
0xe9, 0xb9, 0xfe, 0xff, 0xff, //0x0000044d jmp LBB0_44
//0x00000452 LBB0_57
0x48, 0x8b, 0x4f, 0x08, //0x00000452 movq $8(%rdi), %rcx
0x48, 0x29, 0xd9, //0x00000456 subq %rbx, %rcx
0x49, 0x01, 0xde, //0x00000459 addq %rbx, %r14
0x45, 0x31, 0xe4, //0x0000045c xorl %r12d, %r12d
0xc5, 0x7a, 0x6f, 0x15, 0xc9, 0xfb, 0xff, 0xff, //0x0000045f vmovdqu $-1079(%rip), %xmm10 /* LCPI0_3+0(%rip) */
0xc5, 0xfa, 0x6f, 0x0d, 0xd1, 0xfb, 0xff, 0xff, //0x00000467 vmovdqu $-1071(%rip), %xmm1 /* LCPI0_4+0(%rip) */
0xc4, 0x41, 0x31, 0x76, 0xc9, //0x0000046f vpcmpeqd %xmm9, %xmm9, %xmm9
0xc5, 0xfa, 0x6f, 0x1d, 0xe4, 0xfb, 0xff, 0xff, //0x00000474 vmovdqu $-1052(%rip), %xmm3 /* LCPI0_6+0(%rip) */
0xc5, 0xfa, 0x6f, 0x25, 0xec, 0xfb, 0xff, 0xff, //0x0000047c vmovdqu $-1044(%rip), %xmm4 /* LCPI0_7+0(%rip) */
0xc4, 0x41, 0x38, 0x57, 0xc0, //0x00000484 vxorps %xmm8, %xmm8, %xmm8
0x31, 0xdb, //0x00000489 xorl %ebx, %ebx
0x45, 0x31, 0xc0, //0x0000048b xorl %r8d, %r8d
0x45, 0x31, 0xff, //0x0000048e xorl %r15d, %r15d
0x48, 0x83, 0xf9, 0x40, //0x00000491 cmpq $64, %rcx
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000495 movq %rcx, $8(%rsp)
0x4c, 0x89, 0x44, 0x24, 0x10, //0x0000049a movq %r8, $16(%rsp)
0x0f, 0x8d, 0x33, 0x01, 0x00, 0x00, //0x0000049f jge LBB0_58
//0x000004a5 LBB0_67
0x48, 0x85, 0xc9, //0x000004a5 testq %rcx, %rcx
0x0f, 0x8e, 0x6b, 0x07, 0x00, 0x00, //0x000004a8 jle LBB0_118
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x40, //0x000004ae vmovups %ymm8, $64(%rsp)
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x20, //0x000004b4 vmovups %ymm8, $32(%rsp)
0x44, 0x89, 0xf1, //0x000004ba movl %r14d, %ecx
0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000004bd andl $4095, %ecx
0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000004c3 cmpl $4033, %ecx
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x000004c9 jb LBB0_58
0x48, 0x83, 0x7c, 0x24, 0x08, 0x20, //0x000004cf cmpq $32, $8(%rsp)
0x0f, 0x82, 0x2e, 0x00, 0x00, 0x00, //0x000004d5 jb LBB0_71
0xc4, 0xc1, 0x78, 0x10, 0x06, //0x000004db vmovups (%r14), %xmm0
0xc5, 0xf8, 0x11, 0x44, 0x24, 0x20, //0x000004e0 vmovups %xmm0, $32(%rsp)
0xc4, 0xc1, 0x7a, 0x6f, 0x46, 0x10, //0x000004e6 vmovdqu $16(%r14), %xmm0
0xc5, 0xfa, 0x7f, 0x44, 0x24, 0x30, //0x000004ec vmovdqu %xmm0, $48(%rsp)
0x49, 0x83, 0xc6, 0x20, //0x000004f2 addq $32, %r14
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000004f6 movq $8(%rsp), %rcx
0x48, 0x8d, 0x51, 0xe0, //0x000004fb leaq $-32(%rcx), %rdx
0x4c, 0x8d, 0x44, 0x24, 0x40, //0x000004ff leaq $64(%rsp), %r8
0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000504 jmp LBB0_72
//0x00000509 LBB0_71
0x4c, 0x8d, 0x44, 0x24, 0x20, //0x00000509 leaq $32(%rsp), %r8
0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000050e movq $8(%rsp), %rdx
//0x00000513 LBB0_72
0x48, 0x83, 0xfa, 0x10, //0x00000513 cmpq $16, %rdx
0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x00000517 jb LBB0_73
0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x0000051d vmovdqu (%r14), %xmm0
0xc4, 0xc1, 0x7a, 0x7f, 0x00, //0x00000522 vmovdqu %xmm0, (%r8)
0x49, 0x83, 0xc6, 0x10, //0x00000527 addq $16, %r14
0x49, 0x83, 0xc0, 0x10, //0x0000052b addq $16, %r8
0x48, 0x83, 0xc2, 0xf0, //0x0000052f addq $-16, %rdx
0x48, 0x83, 0xfa, 0x08, //0x00000533 cmpq $8, %rdx
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x00000537 jae LBB0_78
//0x0000053d LBB0_74
0x48, 0x83, 0xfa, 0x04, //0x0000053d cmpq $4, %rdx
0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x00000541 jl LBB0_75
//0x00000547 LBB0_79
0x41, 0x8b, 0x0e, //0x00000547 movl (%r14), %ecx
0x41, 0x89, 0x08, //0x0000054a movl %ecx, (%r8)
0x49, 0x83, 0xc6, 0x04, //0x0000054d addq $4, %r14
0x49, 0x83, 0xc0, 0x04, //0x00000551 addq $4, %r8
0x48, 0x83, 0xc2, 0xfc, //0x00000555 addq $-4, %rdx
0x48, 0x83, 0xfa, 0x02, //0x00000559 cmpq $2, %rdx
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000055d jae LBB0_80
//0x00000563 LBB0_76
0x4c, 0x89, 0xf1, //0x00000563 movq %r14, %rcx
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000566 leaq $32(%rsp), %r14
0x48, 0x85, 0xd2, //0x0000056b testq %rdx, %rdx
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x0000056e jne LBB0_81
0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00000574 jmp LBB0_58
//0x00000579 LBB0_73
0x48, 0x83, 0xfa, 0x08, //0x00000579 cmpq $8, %rdx
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000057d jb LBB0_74
//0x00000583 LBB0_78
0x49, 0x8b, 0x0e, //0x00000583 movq (%r14), %rcx
0x49, 0x89, 0x08, //0x00000586 movq %rcx, (%r8)
0x49, 0x83, 0xc6, 0x08, //0x00000589 addq $8, %r14
0x49, 0x83, 0xc0, 0x08, //0x0000058d addq $8, %r8
0x48, 0x83, 0xc2, 0xf8, //0x00000591 addq $-8, %rdx
0x48, 0x83, 0xfa, 0x04, //0x00000595 cmpq $4, %rdx
0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x00000599 jge LBB0_79
//0x0000059f LBB0_75
0x48, 0x83, 0xfa, 0x02, //0x0000059f cmpq $2, %rdx
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x000005a3 jb LBB0_76
//0x000005a9 LBB0_80
0x41, 0x0f, 0xb7, 0x0e, //0x000005a9 movzwl (%r14), %ecx
0x66, 0x41, 0x89, 0x08, //0x000005ad movw %cx, (%r8)
0x49, 0x83, 0xc6, 0x02, //0x000005b1 addq $2, %r14
0x49, 0x83, 0xc0, 0x02, //0x000005b5 addq $2, %r8
0x48, 0x83, 0xc2, 0xfe, //0x000005b9 addq $-2, %rdx
0x4c, 0x89, 0xf1, //0x000005bd movq %r14, %rcx
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000005c0 leaq $32(%rsp), %r14
0x48, 0x85, 0xd2, //0x000005c5 testq %rdx, %rdx
0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x000005c8 je LBB0_58
//0x000005ce LBB0_81
0x8a, 0x09, //0x000005ce movb (%rcx), %cl
0x41, 0x88, 0x08, //0x000005d0 movb %cl, (%r8)
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000005d3 leaq $32(%rsp), %r14
//0x000005d8 LBB0_58
0xc4, 0xc1, 0x7a, 0x6f, 0x16, //0x000005d8 vmovdqu (%r14), %xmm2
0xc4, 0xc1, 0x7a, 0x6f, 0x6e, 0x10, //0x000005dd vmovdqu $16(%r14), %xmm5
0xc4, 0xc1, 0x7a, 0x6f, 0x7e, 0x20, //0x000005e3 vmovdqu $32(%r14), %xmm7
0xc4, 0xc1, 0x7a, 0x6f, 0x76, 0x30, //0x000005e9 vmovdqu $48(%r14), %xmm6
0xc5, 0xa9, 0x74, 0xc2, //0x000005ef vpcmpeqb %xmm2, %xmm10, %xmm0
0xc5, 0x79, 0xd7, 0xe8, //0x000005f3 vpmovmskb %xmm0, %r13d
0xc5, 0xa9, 0x74, 0xc5, //0x000005f7 vpcmpeqb %xmm5, %xmm10, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x000005fb vpmovmskb %xmm0, %ecx
0xc5, 0xa9, 0x74, 0xc7, //0x000005ff vpcmpeqb %xmm7, %xmm10, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x00000603 vpmovmskb %xmm0, %edx
0xc5, 0xa9, 0x74, 0xc6, //0x00000607 vpcmpeqb %xmm6, %xmm10, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x0000060b vpmovmskb %xmm0, %r9d
0x49, 0xc1, 0xe1, 0x30, //0x0000060f shlq $48, %r9
0x48, 0xc1, 0xe2, 0x20, //0x00000613 shlq $32, %rdx
0x48, 0xc1, 0xe1, 0x10, //0x00000617 shlq $16, %rcx
0x49, 0x09, 0xcd, //0x0000061b orq %rcx, %r13
0x49, 0x09, 0xd5, //0x0000061e orq %rdx, %r13
0x4d, 0x09, 0xcd, //0x00000621 orq %r9, %r13
0xc5, 0xe9, 0x74, 0xc1, //0x00000624 vpcmpeqb %xmm1, %xmm2, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x00000628 vpmovmskb %xmm0, %ecx
0xc5, 0xd1, 0x74, 0xc1, //0x0000062c vpcmpeqb %xmm1, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x00000630 vpmovmskb %xmm0, %edx
0xc5, 0xc1, 0x74, 0xc1, //0x00000634 vpcmpeqb %xmm1, %xmm7, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x00000638 vpmovmskb %xmm0, %r9d
0xc5, 0xc9, 0x74, 0xc1, //0x0000063c vpcmpeqb %xmm1, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xd0, //0x00000640 vpmovmskb %xmm0, %r10d
0x49, 0xc1, 0xe2, 0x30, //0x00000644 shlq $48, %r10
0x49, 0xc1, 0xe1, 0x20, //0x00000648 shlq $32, %r9
0x48, 0xc1, 0xe2, 0x10, //0x0000064c shlq $16, %rdx
0x48, 0x09, 0xd1, //0x00000650 orq %rdx, %rcx
0x4c, 0x09, 0xc9, //0x00000653 orq %r9, %rcx
0x4c, 0x09, 0xd1, //0x00000656 orq %r10, %rcx
0x48, 0x89, 0xca, //0x00000659 movq %rcx, %rdx
0x48, 0x09, 0xda, //0x0000065c orq %rbx, %rdx
0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x0000065f je LBB0_60
0x48, 0x89, 0xda, //0x00000665 movq %rbx, %rdx
0x48, 0xf7, 0xd2, //0x00000668 notq %rdx
0x48, 0x21, 0xca, //0x0000066b andq %rcx, %rdx
0x4c, 0x8d, 0x0c, 0x12, //0x0000066e leaq (%rdx,%rdx), %r9
0x49, 0x09, 0xd9, //0x00000672 orq %rbx, %r9
0x4d, 0x89, 0xca, //0x00000675 movq %r9, %r10
0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000678 movabsq $-6148914691236517206, %rbx
0x49, 0x31, 0xda, //0x00000682 xorq %rbx, %r10
0x48, 0x21, 0xd9, //0x00000685 andq %rbx, %rcx
0x4c, 0x21, 0xd1, //0x00000688 andq %r10, %rcx
0x31, 0xdb, //0x0000068b xorl %ebx, %ebx
0x48, 0x01, 0xd1, //0x0000068d addq %rdx, %rcx
0x0f, 0x92, 0xc3, //0x00000690 setb %bl
0x48, 0x01, 0xc9, //0x00000693 addq %rcx, %rcx
0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000696 movabsq $6148914691236517205, %rdx
0x48, 0x31, 0xd1, //0x000006a0 xorq %rdx, %rcx
0x4c, 0x21, 0xc9, //0x000006a3 andq %r9, %rcx
0x48, 0xf7, 0xd1, //0x000006a6 notq %rcx
0xe9, 0x09, 0x00, 0x00, 0x00, //0x000006a9 jmp LBB0_61
//0x000006ae LBB0_60
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000006ae movq $-1, %rcx
0x31, 0xdb, //0x000006b5 xorl %ebx, %ebx
//0x000006b7 LBB0_61
0x48, 0x89, 0x5c, 0x24, 0x18, //0x000006b7 movq %rbx, $24(%rsp)
0x4c, 0x21, 0xe9, //0x000006bc andq %r13, %rcx
0xc4, 0xe1, 0xf9, 0x6e, 0xc1, //0x000006bf vmovq %rcx, %xmm0
0xc4, 0xc3, 0x79, 0x44, 0xc1, 0x00, //0x000006c4 vpclmulqdq $0, %xmm9, %xmm0, %xmm0
0xc4, 0xc1, 0xf9, 0x7e, 0xc5, //0x000006ca vmovq %xmm0, %r13
0x4d, 0x31, 0xe5, //0x000006cf xorq %r12, %r13
0xc5, 0xe9, 0x74, 0xc3, //0x000006d2 vpcmpeqb %xmm3, %xmm2, %xmm0
0xc5, 0x79, 0xd7, 0xd0, //0x000006d6 vpmovmskb %xmm0, %r10d
0xc5, 0xd1, 0x74, 0xc3, //0x000006da vpcmpeqb %xmm3, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x000006de vpmovmskb %xmm0, %ecx
0xc5, 0xc1, 0x74, 0xc3, //0x000006e2 vpcmpeqb %xmm3, %xmm7, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x000006e6 vpmovmskb %xmm0, %edx
0xc5, 0xc9, 0x74, 0xc3, //0x000006ea vpcmpeqb %xmm3, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x000006ee vpmovmskb %xmm0, %r9d
0x49, 0xc1, 0xe1, 0x30, //0x000006f2 shlq $48, %r9
0x48, 0xc1, 0xe2, 0x20, //0x000006f6 shlq $32, %rdx
0x48, 0xc1, 0xe1, 0x10, //0x000006fa shlq $16, %rcx
0x49, 0x09, 0xca, //0x000006fe orq %rcx, %r10
0x49, 0x09, 0xd2, //0x00000701 orq %rdx, %r10
0x4d, 0x09, 0xca, //0x00000704 orq %r9, %r10
0x4d, 0x89, 0xe9, //0x00000707 movq %r13, %r9
0x49, 0xf7, 0xd1, //0x0000070a notq %r9
0x4d, 0x21, 0xca, //0x0000070d andq %r9, %r10
0xc5, 0xe9, 0x74, 0xc4, //0x00000710 vpcmpeqb %xmm4, %xmm2, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x00000714 vpmovmskb %xmm0, %ecx
0xc5, 0xd1, 0x74, 0xc4, //0x00000718 vpcmpeqb %xmm4, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x0000071c vpmovmskb %xmm0, %edx
0xc5, 0xc1, 0x74, 0xc4, //0x00000720 vpcmpeqb %xmm4, %xmm7, %xmm0
0xc5, 0x79, 0xd7, 0xc0, //0x00000724 vpmovmskb %xmm0, %r8d
0xc5, 0xc9, 0x74, 0xc4, //0x00000728 vpcmpeqb %xmm4, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xe0, //0x0000072c vpmovmskb %xmm0, %r12d
0x49, 0xc1, 0xe4, 0x30, //0x00000730 shlq $48, %r12
0x49, 0xc1, 0xe0, 0x20, //0x00000734 shlq $32, %r8
0x48, 0xc1, 0xe2, 0x10, //0x00000738 shlq $16, %rdx
0x48, 0x09, 0xd1, //0x0000073c orq %rdx, %rcx
0x4c, 0x09, 0xc1, //0x0000073f orq %r8, %rcx
0x4c, 0x09, 0xe1, //0x00000742 orq %r12, %rcx
0x4c, 0x21, 0xc9, //0x00000745 andq %r9, %rcx
0x0f, 0x84, 0x3e, 0x00, 0x00, 0x00, //0x00000748 je LBB0_65
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x0000074e movq $16(%rsp), %r8
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000753 .p2align 4, 0x90
//0x00000760 LBB0_63
0x48, 0x8d, 0x59, 0xff, //0x00000760 leaq $-1(%rcx), %rbx
0x48, 0x89, 0xda, //0x00000764 movq %rbx, %rdx
0x4c, 0x21, 0xd2, //0x00000767 andq %r10, %rdx
0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x0000076a popcntq %rdx, %rdx
0x4c, 0x01, 0xc2, //0x0000076f addq %r8, %rdx
0x4c, 0x39, 0xfa, //0x00000772 cmpq %r15, %rdx
0x0f, 0x86, 0xe0, 0x03, 0x00, 0x00, //0x00000775 jbe LBB0_109
0x49, 0xff, 0xc7, //0x0000077b incq %r15
0x48, 0x21, 0xd9, //0x0000077e andq %rbx, %rcx
0x0f, 0x85, 0xd9, 0xff, 0xff, 0xff, //0x00000781 jne LBB0_63
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000787 jmp LBB0_66
//0x0000078c LBB0_65
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x0000078c movq $16(%rsp), %r8
//0x00000791 LBB0_66
0x49, 0xc1, 0xfd, 0x3f, //0x00000791 sarq $63, %r13
0xf3, 0x49, 0x0f, 0xb8, 0xca, //0x00000795 popcntq %r10, %rcx
0x49, 0x01, 0xc8, //0x0000079a addq %rcx, %r8
0x49, 0x83, 0xc6, 0x40, //0x0000079d addq $64, %r14
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000007a1 movq $8(%rsp), %rcx
0x48, 0x83, 0xc1, 0xc0, //0x000007a6 addq $-64, %rcx
0x4d, 0x89, 0xec, //0x000007aa movq %r13, %r12
0x48, 0x8b, 0x5c, 0x24, 0x18, //0x000007ad movq $24(%rsp), %rbx
0x48, 0x83, 0xf9, 0x40, //0x000007b2 cmpq $64, %rcx
0x48, 0x89, 0x4c, 0x24, 0x08, //0x000007b6 movq %rcx, $8(%rsp)
0x4c, 0x89, 0x44, 0x24, 0x10, //0x000007bb movq %r8, $16(%rsp)
0x0f, 0x8d, 0x12, 0xfe, 0xff, 0xff, //0x000007c0 jge LBB0_58
0xe9, 0xda, 0xfc, 0xff, 0xff, //0x000007c6 jmp LBB0_67
//0x000007cb LBB0_82
0x49, 0x8d, 0x4b, 0x05, //0x000007cb leaq $5(%r11), %rcx
0x48, 0x3b, 0x4f, 0x08, //0x000007cf cmpq $8(%rdi), %rcx
0x0f, 0x87, 0x35, 0xfb, 0xff, 0xff, //0x000007d3 ja LBB0_45
//0x000007d9 LBB0_83
0x48, 0x89, 0x0e, //0x000007d9 movq %rcx, (%rsi)
0xe9, 0x2a, 0xfb, 0xff, 0xff, //0x000007dc jmp LBB0_44
//0x000007e1 LBB0_84
0x48, 0x8b, 0x4f, 0x08, //0x000007e1 movq $8(%rdi), %rcx
0x48, 0x29, 0xd9, //0x000007e5 subq %rbx, %rcx
0x49, 0x01, 0xde, //0x000007e8 addq %rbx, %r14
0x45, 0x31, 0xe4, //0x000007eb xorl %r12d, %r12d
0xc5, 0x7a, 0x6f, 0x15, 0x3a, 0xf8, 0xff, 0xff, //0x000007ee vmovdqu $-1990(%rip), %xmm10 /* LCPI0_3+0(%rip) */
0xc5, 0xfa, 0x6f, 0x0d, 0x42, 0xf8, 0xff, 0xff, //0x000007f6 vmovdqu $-1982(%rip), %xmm1 /* LCPI0_4+0(%rip) */
0xc4, 0x41, 0x31, 0x76, 0xc9, //0x000007fe vpcmpeqd %xmm9, %xmm9, %xmm9
0xc5, 0xfa, 0x6f, 0x1d, 0x45, 0xf8, 0xff, 0xff, //0x00000803 vmovdqu $-1979(%rip), %xmm3 /* LCPI0_5+0(%rip) */
0xc5, 0xfa, 0x6f, 0x25, 0x0d, 0xf8, 0xff, 0xff, //0x0000080b vmovdqu $-2035(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc4, 0x41, 0x38, 0x57, 0xc0, //0x00000813 vxorps %xmm8, %xmm8, %xmm8
0x31, 0xdb, //0x00000818 xorl %ebx, %ebx
0x45, 0x31, 0xc0, //0x0000081a xorl %r8d, %r8d
0x45, 0x31, 0xff, //0x0000081d xorl %r15d, %r15d
0x48, 0x83, 0xf9, 0x40, //0x00000820 cmpq $64, %rcx
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000824 movq %rcx, $8(%rsp)
0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000829 movq %r8, $16(%rsp)
0x0f, 0x8d, 0x33, 0x01, 0x00, 0x00, //0x0000082e jge LBB0_85
//0x00000834 LBB0_94
0x48, 0x85, 0xc9, //0x00000834 testq %rcx, %rcx
0x0f, 0x8e, 0xdc, 0x03, 0x00, 0x00, //0x00000837 jle LBB0_118
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x40, //0x0000083d vmovups %ymm8, $64(%rsp)
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x20, //0x00000843 vmovups %ymm8, $32(%rsp)
0x44, 0x89, 0xf1, //0x00000849 movl %r14d, %ecx
0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x0000084c andl $4095, %ecx
0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00000852 cmpl $4033, %ecx
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x00000858 jb LBB0_85
0x48, 0x83, 0x7c, 0x24, 0x08, 0x20, //0x0000085e cmpq $32, $8(%rsp)
0x0f, 0x82, 0x2e, 0x00, 0x00, 0x00, //0x00000864 jb LBB0_98
0xc4, 0xc1, 0x78, 0x10, 0x06, //0x0000086a vmovups (%r14), %xmm0
0xc5, 0xf8, 0x11, 0x44, 0x24, 0x20, //0x0000086f vmovups %xmm0, $32(%rsp)
0xc4, 0xc1, 0x7a, 0x6f, 0x46, 0x10, //0x00000875 vmovdqu $16(%r14), %xmm0
0xc5, 0xfa, 0x7f, 0x44, 0x24, 0x30, //0x0000087b vmovdqu %xmm0, $48(%rsp)
0x49, 0x83, 0xc6, 0x20, //0x00000881 addq $32, %r14
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00000885 movq $8(%rsp), %rcx
0x48, 0x8d, 0x51, 0xe0, //0x0000088a leaq $-32(%rcx), %rdx
0x4c, 0x8d, 0x44, 0x24, 0x40, //0x0000088e leaq $64(%rsp), %r8
0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000893 jmp LBB0_99
//0x00000898 LBB0_98
0x4c, 0x8d, 0x44, 0x24, 0x20, //0x00000898 leaq $32(%rsp), %r8
0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000089d movq $8(%rsp), %rdx
//0x000008a2 LBB0_99
0x48, 0x83, 0xfa, 0x10, //0x000008a2 cmpq $16, %rdx
0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x000008a6 jb LBB0_100
0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x000008ac vmovdqu (%r14), %xmm0
0xc4, 0xc1, 0x7a, 0x7f, 0x00, //0x000008b1 vmovdqu %xmm0, (%r8)
0x49, 0x83, 0xc6, 0x10, //0x000008b6 addq $16, %r14
0x49, 0x83, 0xc0, 0x10, //0x000008ba addq $16, %r8
0x48, 0x83, 0xc2, 0xf0, //0x000008be addq $-16, %rdx
0x48, 0x83, 0xfa, 0x08, //0x000008c2 cmpq $8, %rdx
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000008c6 jae LBB0_105
//0x000008cc LBB0_101
0x48, 0x83, 0xfa, 0x04, //0x000008cc cmpq $4, %rdx
0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x000008d0 jl LBB0_102
//0x000008d6 LBB0_106
0x41, 0x8b, 0x0e, //0x000008d6 movl (%r14), %ecx
0x41, 0x89, 0x08, //0x000008d9 movl %ecx, (%r8)
0x49, 0x83, 0xc6, 0x04, //0x000008dc addq $4, %r14
0x49, 0x83, 0xc0, 0x04, //0x000008e0 addq $4, %r8
0x48, 0x83, 0xc2, 0xfc, //0x000008e4 addq $-4, %rdx
0x48, 0x83, 0xfa, 0x02, //0x000008e8 cmpq $2, %rdx
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000008ec jae LBB0_107
//0x000008f2 LBB0_103
0x4c, 0x89, 0xf1, //0x000008f2 movq %r14, %rcx
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000008f5 leaq $32(%rsp), %r14
0x48, 0x85, 0xd2, //0x000008fa testq %rdx, %rdx
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x000008fd jne LBB0_108
0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00000903 jmp LBB0_85
//0x00000908 LBB0_100
0x48, 0x83, 0xfa, 0x08, //0x00000908 cmpq $8, %rdx
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000090c jb LBB0_101
//0x00000912 LBB0_105
0x49, 0x8b, 0x0e, //0x00000912 movq (%r14), %rcx
0x49, 0x89, 0x08, //0x00000915 movq %rcx, (%r8)
0x49, 0x83, 0xc6, 0x08, //0x00000918 addq $8, %r14
0x49, 0x83, 0xc0, 0x08, //0x0000091c addq $8, %r8
0x48, 0x83, 0xc2, 0xf8, //0x00000920 addq $-8, %rdx
0x48, 0x83, 0xfa, 0x04, //0x00000924 cmpq $4, %rdx
0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x00000928 jge LBB0_106
//0x0000092e LBB0_102
0x48, 0x83, 0xfa, 0x02, //0x0000092e cmpq $2, %rdx
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00000932 jb LBB0_103
//0x00000938 LBB0_107
0x41, 0x0f, 0xb7, 0x0e, //0x00000938 movzwl (%r14), %ecx
0x66, 0x41, 0x89, 0x08, //0x0000093c movw %cx, (%r8)
0x49, 0x83, 0xc6, 0x02, //0x00000940 addq $2, %r14
0x49, 0x83, 0xc0, 0x02, //0x00000944 addq $2, %r8
0x48, 0x83, 0xc2, 0xfe, //0x00000948 addq $-2, %rdx
0x4c, 0x89, 0xf1, //0x0000094c movq %r14, %rcx
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x0000094f leaq $32(%rsp), %r14
0x48, 0x85, 0xd2, //0x00000954 testq %rdx, %rdx
0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00000957 je LBB0_85
//0x0000095d LBB0_108
0x8a, 0x09, //0x0000095d movb (%rcx), %cl
0x41, 0x88, 0x08, //0x0000095f movb %cl, (%r8)
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000962 leaq $32(%rsp), %r14
//0x00000967 LBB0_85
0xc4, 0xc1, 0x7a, 0x6f, 0x16, //0x00000967 vmovdqu (%r14), %xmm2
0xc4, 0xc1, 0x7a, 0x6f, 0x6e, 0x10, //0x0000096c vmovdqu $16(%r14), %xmm5
0xc4, 0xc1, 0x7a, 0x6f, 0x7e, 0x20, //0x00000972 vmovdqu $32(%r14), %xmm7
0xc4, 0xc1, 0x7a, 0x6f, 0x76, 0x30, //0x00000978 vmovdqu $48(%r14), %xmm6
0xc5, 0xa9, 0x74, 0xc2, //0x0000097e vpcmpeqb %xmm2, %xmm10, %xmm0
0xc5, 0x79, 0xd7, 0xe8, //0x00000982 vpmovmskb %xmm0, %r13d
0xc5, 0xa9, 0x74, 0xc5, //0x00000986 vpcmpeqb %xmm5, %xmm10, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x0000098a vpmovmskb %xmm0, %ecx
0xc5, 0xa9, 0x74, 0xc7, //0x0000098e vpcmpeqb %xmm7, %xmm10, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x00000992 vpmovmskb %xmm0, %edx
0xc5, 0xa9, 0x74, 0xc6, //0x00000996 vpcmpeqb %xmm6, %xmm10, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x0000099a vpmovmskb %xmm0, %r9d
0x49, 0xc1, 0xe1, 0x30, //0x0000099e shlq $48, %r9
0x48, 0xc1, 0xe2, 0x20, //0x000009a2 shlq $32, %rdx
0x48, 0xc1, 0xe1, 0x10, //0x000009a6 shlq $16, %rcx
0x49, 0x09, 0xcd, //0x000009aa orq %rcx, %r13
0x49, 0x09, 0xd5, //0x000009ad orq %rdx, %r13
0x4d, 0x09, 0xcd, //0x000009b0 orq %r9, %r13
0xc5, 0xe9, 0x74, 0xc1, //0x000009b3 vpcmpeqb %xmm1, %xmm2, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x000009b7 vpmovmskb %xmm0, %ecx
0xc5, 0xd1, 0x74, 0xc1, //0x000009bb vpcmpeqb %xmm1, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x000009bf vpmovmskb %xmm0, %edx
0xc5, 0xc1, 0x74, 0xc1, //0x000009c3 vpcmpeqb %xmm1, %xmm7, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x000009c7 vpmovmskb %xmm0, %r9d
0xc5, 0xc9, 0x74, 0xc1, //0x000009cb vpcmpeqb %xmm1, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xd0, //0x000009cf vpmovmskb %xmm0, %r10d
0x49, 0xc1, 0xe2, 0x30, //0x000009d3 shlq $48, %r10
0x49, 0xc1, 0xe1, 0x20, //0x000009d7 shlq $32, %r9
0x48, 0xc1, 0xe2, 0x10, //0x000009db shlq $16, %rdx
0x48, 0x09, 0xd1, //0x000009df orq %rdx, %rcx
0x4c, 0x09, 0xc9, //0x000009e2 orq %r9, %rcx
0x4c, 0x09, 0xd1, //0x000009e5 orq %r10, %rcx
0x48, 0x89, 0xca, //0x000009e8 movq %rcx, %rdx
0x48, 0x09, 0xda, //0x000009eb orq %rbx, %rdx
0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x000009ee je LBB0_87
0x48, 0x89, 0xda, //0x000009f4 movq %rbx, %rdx
0x48, 0xf7, 0xd2, //0x000009f7 notq %rdx
0x48, 0x21, 0xca, //0x000009fa andq %rcx, %rdx
0x4c, 0x8d, 0x0c, 0x12, //0x000009fd leaq (%rdx,%rdx), %r9
0x49, 0x09, 0xd9, //0x00000a01 orq %rbx, %r9
0x4d, 0x89, 0xca, //0x00000a04 movq %r9, %r10
0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a07 movabsq $-6148914691236517206, %rbx
0x49, 0x31, 0xda, //0x00000a11 xorq %rbx, %r10
0x48, 0x21, 0xd9, //0x00000a14 andq %rbx, %rcx
0x4c, 0x21, 0xd1, //0x00000a17 andq %r10, %rcx
0x31, 0xdb, //0x00000a1a xorl %ebx, %ebx
0x48, 0x01, 0xd1, //0x00000a1c addq %rdx, %rcx
0x0f, 0x92, 0xc3, //0x00000a1f setb %bl
0x48, 0x01, 0xc9, //0x00000a22 addq %rcx, %rcx
0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a25 movabsq $6148914691236517205, %rdx
0x48, 0x31, 0xd1, //0x00000a2f xorq %rdx, %rcx
0x4c, 0x21, 0xc9, //0x00000a32 andq %r9, %rcx
0x48, 0xf7, 0xd1, //0x00000a35 notq %rcx
0xe9, 0x09, 0x00, 0x00, 0x00, //0x00000a38 jmp LBB0_88
//0x00000a3d LBB0_87
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000a3d movq $-1, %rcx
0x31, 0xdb, //0x00000a44 xorl %ebx, %ebx
//0x00000a46 LBB0_88
0x48, 0x89, 0x5c, 0x24, 0x18, //0x00000a46 movq %rbx, $24(%rsp)
0x4c, 0x21, 0xe9, //0x00000a4b andq %r13, %rcx
0xc4, 0xe1, 0xf9, 0x6e, 0xc1, //0x00000a4e vmovq %rcx, %xmm0
0xc4, 0xc3, 0x79, 0x44, 0xc1, 0x00, //0x00000a53 vpclmulqdq $0, %xmm9, %xmm0, %xmm0
0xc4, 0xc1, 0xf9, 0x7e, 0xc5, //0x00000a59 vmovq %xmm0, %r13
0x4d, 0x31, 0xe5, //0x00000a5e xorq %r12, %r13
0xc5, 0xe9, 0x74, 0xc3, //0x00000a61 vpcmpeqb %xmm3, %xmm2, %xmm0
0xc5, 0x79, 0xd7, 0xd0, //0x00000a65 vpmovmskb %xmm0, %r10d
0xc5, 0xd1, 0x74, 0xc3, //0x00000a69 vpcmpeqb %xmm3, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x00000a6d vpmovmskb %xmm0, %ecx
0xc5, 0xc1, 0x74, 0xc3, //0x00000a71 vpcmpeqb %xmm3, %xmm7, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x00000a75 vpmovmskb %xmm0, %edx
0xc5, 0xc9, 0x74, 0xc3, //0x00000a79 vpcmpeqb %xmm3, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xc8, //0x00000a7d vpmovmskb %xmm0, %r9d
0x49, 0xc1, 0xe1, 0x30, //0x00000a81 shlq $48, %r9
0x48, 0xc1, 0xe2, 0x20, //0x00000a85 shlq $32, %rdx
0x48, 0xc1, 0xe1, 0x10, //0x00000a89 shlq $16, %rcx
0x49, 0x09, 0xca, //0x00000a8d orq %rcx, %r10
0x49, 0x09, 0xd2, //0x00000a90 orq %rdx, %r10
0x4d, 0x09, 0xca, //0x00000a93 orq %r9, %r10
0x4d, 0x89, 0xe9, //0x00000a96 movq %r13, %r9
0x49, 0xf7, 0xd1, //0x00000a99 notq %r9
0x4d, 0x21, 0xca, //0x00000a9c andq %r9, %r10
0xc5, 0xe9, 0x74, 0xc4, //0x00000a9f vpcmpeqb %xmm4, %xmm2, %xmm0
0xc5, 0xf9, 0xd7, 0xc8, //0x00000aa3 vpmovmskb %xmm0, %ecx
0xc5, 0xd1, 0x74, 0xc4, //0x00000aa7 vpcmpeqb %xmm4, %xmm5, %xmm0
0xc5, 0xf9, 0xd7, 0xd0, //0x00000aab vpmovmskb %xmm0, %edx
0xc5, 0xc1, 0x74, 0xc4, //0x00000aaf vpcmpeqb %xmm4, %xmm7, %xmm0
0xc5, 0x79, 0xd7, 0xc0, //0x00000ab3 vpmovmskb %xmm0, %r8d
0xc5, 0xc9, 0x74, 0xc4, //0x00000ab7 vpcmpeqb %xmm4, %xmm6, %xmm0
0xc5, 0x79, 0xd7, 0xe0, //0x00000abb vpmovmskb %xmm0, %r12d
0x49, 0xc1, 0xe4, 0x30, //0x00000abf shlq $48, %r12
0x49, 0xc1, 0xe0, 0x20, //0x00000ac3 shlq $32, %r8
0x48, 0xc1, 0xe2, 0x10, //0x00000ac7 shlq $16, %rdx
0x48, 0x09, 0xd1, //0x00000acb orq %rdx, %rcx
0x4c, 0x09, 0xc1, //0x00000ace orq %r8, %rcx
0x4c, 0x09, 0xe1, //0x00000ad1 orq %r12, %rcx
0x4c, 0x21, 0xc9, //0x00000ad4 andq %r9, %rcx
0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000ad7 je LBB0_92
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00000add movq $16(%rsp), %r8
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ae2 .p2align 4, 0x90
//0x00000af0 LBB0_90
0x48, 0x8d, 0x59, 0xff, //0x00000af0 leaq $-1(%rcx), %rbx
0x48, 0x89, 0xda, //0x00000af4 movq %rbx, %rdx
0x4c, 0x21, 0xd2, //0x00000af7 andq %r10, %rdx
0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00000afa popcntq %rdx, %rdx
0x4c, 0x01, 0xc2, //0x00000aff addq %r8, %rdx
0x4c, 0x39, 0xfa, //0x00000b02 cmpq %r15, %rdx
0x0f, 0x86, 0x50, 0x00, 0x00, 0x00, //0x00000b05 jbe LBB0_109
0x49, 0xff, 0xc7, //0x00000b0b incq %r15
0x48, 0x21, 0xd9, //0x00000b0e andq %rbx, %rcx
0x0f, 0x85, 0xd9, 0xff, 0xff, 0xff, //0x00000b11 jne LBB0_90
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000b17 jmp LBB0_93
//0x00000b1c LBB0_92
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00000b1c movq $16(%rsp), %r8
//0x00000b21 LBB0_93
0x49, 0xc1, 0xfd, 0x3f, //0x00000b21 sarq $63, %r13
0xf3, 0x49, 0x0f, 0xb8, 0xca, //0x00000b25 popcntq %r10, %rcx
0x49, 0x01, 0xc8, //0x00000b2a addq %rcx, %r8
0x49, 0x83, 0xc6, 0x40, //0x00000b2d addq $64, %r14
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00000b31 movq $8(%rsp), %rcx
0x48, 0x83, 0xc1, 0xc0, //0x00000b36 addq $-64, %rcx
0x4d, 0x89, 0xec, //0x00000b3a movq %r13, %r12
0x48, 0x8b, 0x5c, 0x24, 0x18, //0x00000b3d movq $24(%rsp), %rbx
0x48, 0x83, 0xf9, 0x40, //0x00000b42 cmpq $64, %rcx
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000b46 movq %rcx, $8(%rsp)
0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000b4b movq %r8, $16(%rsp)
0x0f, 0x8d, 0x11, 0xfe, 0xff, 0xff, //0x00000b50 jge LBB0_85
0xe9, 0xd9, 0xfc, 0xff, 0xff, //0x00000b56 jmp LBB0_94
//0x00000b5b LBB0_109
0x48, 0x8b, 0x47, 0x08, //0x00000b5b movq $8(%rdi), %rax
0x48, 0x0f, 0xbc, 0xc9, //0x00000b5f bsfq %rcx, %rcx
0x48, 0x2b, 0x4c, 0x24, 0x08, //0x00000b63 subq $8(%rsp), %rcx
0x48, 0x8d, 0x44, 0x01, 0x01, //0x00000b68 leaq $1(%rcx,%rax), %rax
0x48, 0x89, 0x06, //0x00000b6d movq %rax, (%rsi)
0x48, 0x8b, 0x4f, 0x08, //0x00000b70 movq $8(%rdi), %rcx
0x48, 0x39, 0xc8, //0x00000b74 cmpq %rcx, %rax
0x48, 0x0f, 0x47, 0xc1, //0x00000b77 cmovaq %rcx, %rax
0x48, 0x89, 0x06, //0x00000b7b movq %rax, (%rsi)
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000b7e movq $-1, %rax
0x4c, 0x0f, 0x47, 0xd8, //0x00000b85 cmovaq %rax, %r11
0xe9, 0x7d, 0xf7, 0xff, 0xff, //0x00000b89 jmp LBB0_44
//0x00000b8e LBB0_54
0x4d, 0x85, 0xe4, //0x00000b8e testq %r12, %r12
0x0f, 0x85, 0x8e, 0x00, 0x00, 0x00, //0x00000b91 jne LBB0_119
0x4b, 0x8d, 0x5c, 0x17, 0x01, //0x00000b97 leaq $1(%r15,%r10), %rbx
0x49, 0xf7, 0xd7, //0x00000b9c notq %r15
0x4d, 0x01, 0xc7, //0x00000b9f addq %r8, %r15
//0x00000ba2 LBB0_56
0x4d, 0x85, 0xff, //0x00000ba2 testq %r15, %r15
0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00000ba5 jg LBB0_113
0xe9, 0x5e, 0xf7, 0xff, 0xff, //0x00000bab jmp LBB0_45
//0x00000bb0 LBB0_111
0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00000bb0 movq $-2, %rcx
0xb8, 0x02, 0x00, 0x00, 0x00, //0x00000bb7 movl $2, %eax
0x48, 0x01, 0xc3, //0x00000bbc addq %rax, %rbx
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bbf movq $-1, %rax
0x49, 0x01, 0xcf, //0x00000bc6 addq %rcx, %r15
0x0f, 0x8e, 0x3f, 0xf7, 0xff, 0xff, //0x00000bc9 jle LBB0_45
//0x00000bcf LBB0_113
0x0f, 0xb6, 0x03, //0x00000bcf movzbl (%rbx), %eax
0x3c, 0x5c, //0x00000bd2 cmpb $92, %al
0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x00000bd4 je LBB0_111
0x3c, 0x22, //0x00000bda cmpb $34, %al
0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00000bdc je LBB0_116
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000be2 movq $-1, %rcx
0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000be9 movl $1, %eax
0x48, 0x01, 0xc3, //0x00000bee addq %rax, %rbx
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bf1 movq $-1, %rax
0x49, 0x01, 0xcf, //0x00000bf8 addq %rcx, %r15
0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x00000bfb jg LBB0_113
0xe9, 0x08, 0xf7, 0xff, 0xff, //0x00000c01 jmp LBB0_45
//0x00000c06 LBB0_116
0x4c, 0x29, 0xf3, //0x00000c06 subq %r14, %rbx
0x48, 0xff, 0xc3, //0x00000c09 incq %rbx
0xe9, 0xf7, 0xf6, 0xff, 0xff, //0x00000c0c jmp LBB0_43
//0x00000c11 LBB0_117
0x4c, 0x01, 0xf3, //0x00000c11 addq %r14, %rbx
0xe9, 0x89, 0xff, 0xff, 0xff, //0x00000c14 jmp LBB0_56
//0x00000c19 LBB0_118
0x48, 0x8b, 0x4f, 0x08, //0x00000c19 movq $8(%rdi), %rcx
0x48, 0x89, 0x0e, //0x00000c1d movq %rcx, (%rsi)
0xe9, 0xe9, 0xf6, 0xff, 0xff, //0x00000c20 jmp LBB0_45
//0x00000c25 LBB0_119
0x49, 0x8d, 0x48, 0xff, //0x00000c25 leaq $-1(%r8), %rcx
0x4c, 0x39, 0xf9, //0x00000c29 cmpq %r15, %rcx
0x0f, 0x84, 0xdc, 0xf6, 0xff, 0xff, //0x00000c2c je LBB0_45
0x4b, 0x8d, 0x5c, 0x17, 0x02, //0x00000c32 leaq $2(%r15,%r10), %rbx
0x4d, 0x29, 0xf8, //0x00000c37 subq %r15, %r8
0x49, 0x83, 0xc0, 0xfe, //0x00000c3a addq $-2, %r8
0x4d, 0x89, 0xc7, //0x00000c3e movq %r8, %r15
0xe9, 0x5c, 0xff, 0xff, 0xff, //0x00000c41 jmp LBB0_56
0x90, 0x90, //0x00000c46 .p2align 2, 0x90
// // .set L0_0_set_45, LBB0_45-LJTI0_0
// // .set L0_0_set_47, LBB0_47-LJTI0_0
// // .set L0_0_set_48, LBB0_48-LJTI0_0
// // .set L0_0_set_29, LBB0_29-LJTI0_0
// // .set L0_0_set_57, LBB0_57-LJTI0_0
// // .set L0_0_set_82, LBB0_82-LJTI0_0
// // .set L0_0_set_46, LBB0_46-LJTI0_0
// // .set L0_0_set_84, LBB0_84-LJTI0_0
//0x00000c48 LJTI0_0
0xc6, 0xf6, 0xff, 0xff, //0x00000c48 .long L0_0_set_45
0xeb, 0xf6, 0xff, 0xff, //0x00000c4c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c50 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c54 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c58 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c5c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c60 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c64 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c68 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c6c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c70 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c74 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c78 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c7c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c80 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c84 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c88 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c8c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c90 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c94 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c98 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000c9c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ca0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ca4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ca8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cac .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cb0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cb4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cb8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cbc .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cc0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cc4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cc8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ccc .long L0_0_set_47
0xfa, 0xf6, 0xff, 0xff, //0x00000cd0 .long L0_0_set_48
0xeb, 0xf6, 0xff, 0xff, //0x00000cd4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cd8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cdc .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ce0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ce4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ce8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cec .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cf0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cf4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000cf8 .long L0_0_set_47
0xe3, 0xf5, 0xff, 0xff, //0x00000cfc .long L0_0_set_29
0xeb, 0xf6, 0xff, 0xff, //0x00000d00 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d04 .long L0_0_set_47
0xe3, 0xf5, 0xff, 0xff, //0x00000d08 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d0c .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d10 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d14 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d18 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d1c .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d20 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d24 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d28 .long L0_0_set_29
0xe3, 0xf5, 0xff, 0xff, //0x00000d2c .long L0_0_set_29
0xeb, 0xf6, 0xff, 0xff, //0x00000d30 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d34 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d38 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d3c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d40 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d44 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d48 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d4c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d50 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d54 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d58 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d5c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d60 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d64 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d68 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d6c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d70 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d74 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d78 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d7c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d80 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d84 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d88 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d8c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d90 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d94 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d98 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000d9c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000da0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000da4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000da8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dac .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000db0 .long L0_0_set_47
0x0a, 0xf8, 0xff, 0xff, //0x00000db4 .long L0_0_set_57
0xeb, 0xf6, 0xff, 0xff, //0x00000db8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dbc .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dc0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dc4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dc8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dcc .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dd0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dd4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dd8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000ddc .long L0_0_set_47
0x83, 0xfb, 0xff, 0xff, //0x00000de0 .long L0_0_set_82
0xeb, 0xf6, 0xff, 0xff, //0x00000de4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000de8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dec .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000df0 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000df4 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000df8 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000dfc .long L0_0_set_47
0xd8, 0xf6, 0xff, 0xff, //0x00000e00 .long L0_0_set_46
0xeb, 0xf6, 0xff, 0xff, //0x00000e04 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e08 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e0c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e10 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e14 .long L0_0_set_47
0xd8, 0xf6, 0xff, 0xff, //0x00000e18 .long L0_0_set_46
0xeb, 0xf6, 0xff, 0xff, //0x00000e1c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e20 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e24 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e28 .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e2c .long L0_0_set_47
0xeb, 0xf6, 0xff, 0xff, //0x00000e30 .long L0_0_set_47
0x99, 0xfb, 0xff, 0xff, //0x00000e34 .long L0_0_set_84
//0x00000e38 .p2align 2, 0x00
//0x00000e38 _MASK_USE_NUMBER
0x02, 0x00, 0x00, 0x00, //0x00000e38 .long 2
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__skip_one = 144
)
const (
_stack__skip_one = 160
)
const (
_size__skip_one = 9472
)
var (
_pcsp__skip_one = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{9044, 160},
{9048, 48},
{9049, 40},
{9051, 32},
{9053, 24},
{9055, 16},
{9057, 8},
{9058, 0},
{9472, 160},
}
)
var _cfunc_skip_one = []loader.CFunc{
{"_skip_one_entry", 0, _entry__skip_one, 0, nil},
{"_skip_one", _entry__skip_one, _size__skip_one, _stack__skip_one, _pcsp__skip_one},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_u64toa func(out unsafe.Pointer, val uint64) (ret int)
var S_u64toa uintptr
//go:nosplit
func u64toa(out *byte, val uint64) (ret int) {
return F_u64toa(rt.NoEscape(unsafe.Pointer(out)), val)
}

View File

@ -0,0 +1,39 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__u64toa = 64
)
const (
_stack__u64toa = 8
)
const (
_size__u64toa = 1232
)
var (
_pcsp__u64toa = [][2]uint32{
{1, 0},
{161, 8},
{162, 0},
{457, 8},
{458, 0},
{756, 8},
{757, 0},
{1221, 8},
{1223, 0},
}
)
var _cfunc_u64toa = []loader.CFunc{
{"_u64toa_entry", 0, _entry__u64toa, 0, nil},
{"_u64toa", _entry__u64toa, _size__u64toa, _stack__u64toa, _pcsp__u64toa},
}

View File

@ -0,0 +1,371 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_u64toa = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, // .quad 3518437209
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, //0x00000008 .quad 3518437209
//0x00000010 LCPI0_3
0x0a, 0x00, //0x00000010 .word 10
0x0a, 0x00, //0x00000012 .word 10
0x0a, 0x00, //0x00000014 .word 10
0x0a, 0x00, //0x00000016 .word 10
0x0a, 0x00, //0x00000018 .word 10
0x0a, 0x00, //0x0000001a .word 10
0x0a, 0x00, //0x0000001c .word 10
0x0a, 0x00, //0x0000001e .word 10
//0x00000020 LCPI0_4
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000020 QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
//0x00000030 .p2align 3, 0x00
//0x00000030 LCPI0_1
0xc5, 0x20, 0x7b, 0x14, 0x34, 0x33, 0x00, 0x80, //0x00000030 .quad -9223315738079846203
//0x00000038 LCPI0_2
0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, //0x00000038 .quad -9223336852348469120
//0x00000040 .p2align 4, 0x90
//0x00000040 _u64toa
0x55, //0x00000040 pushq %rbp
0x48, 0x89, 0xe5, //0x00000041 movq %rsp, %rbp
0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x00000044 cmpq $9999, %rsi
0x0f, 0x87, 0xa2, 0x00, 0x00, 0x00, //0x0000004b ja LBB0_8
0x0f, 0xb7, 0xc6, //0x00000051 movzwl %si, %eax
0xc1, 0xe8, 0x02, //0x00000054 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000057 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x0000005d shrl $17, %eax
0x48, 0x8d, 0x14, 0x00, //0x00000060 leaq (%rax,%rax), %rdx
0x6b, 0xc0, 0x64, //0x00000064 imull $100, %eax, %eax
0x89, 0xf1, //0x00000067 movl %esi, %ecx
0x29, 0xc1, //0x00000069 subl %eax, %ecx
0x0f, 0xb7, 0xc1, //0x0000006b movzwl %cx, %eax
0x48, 0x01, 0xc0, //0x0000006e addq %rax, %rax
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x00000071 cmpl $1000, %esi
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000077 jb LBB0_3
0x48, 0x8d, 0x0d, 0x8c, 0x04, 0x00, 0x00, //0x0000007d leaq $1164(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x0c, 0x0a, //0x00000084 movb (%rdx,%rcx), %cl
0x88, 0x0f, //0x00000087 movb %cl, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000089 movl $1, %ecx
0xe9, 0x0b, 0x00, 0x00, 0x00, //0x0000008e jmp LBB0_4
//0x00000093 LBB0_3
0x31, 0xc9, //0x00000093 xorl %ecx, %ecx
0x83, 0xfe, 0x64, //0x00000095 cmpl $100, %esi
0x0f, 0x82, 0x45, 0x00, 0x00, 0x00, //0x00000098 jb LBB0_5
//0x0000009e LBB0_4
0x0f, 0xb7, 0xd2, //0x0000009e movzwl %dx, %edx
0x48, 0x83, 0xca, 0x01, //0x000000a1 orq $1, %rdx
0x48, 0x8d, 0x35, 0x64, 0x04, 0x00, 0x00, //0x000000a5 leaq $1124(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x14, 0x32, //0x000000ac movb (%rdx,%rsi), %dl
0x89, 0xce, //0x000000af movl %ecx, %esi
0xff, 0xc1, //0x000000b1 incl %ecx
0x88, 0x14, 0x37, //0x000000b3 movb %dl, (%rdi,%rsi)
//0x000000b6 LBB0_6
0x48, 0x8d, 0x15, 0x53, 0x04, 0x00, 0x00, //0x000000b6 leaq $1107(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x14, 0x10, //0x000000bd movb (%rax,%rdx), %dl
0x89, 0xce, //0x000000c0 movl %ecx, %esi
0xff, 0xc1, //0x000000c2 incl %ecx
0x88, 0x14, 0x37, //0x000000c4 movb %dl, (%rdi,%rsi)
//0x000000c7 LBB0_7
0x0f, 0xb7, 0xc0, //0x000000c7 movzwl %ax, %eax
0x48, 0x83, 0xc8, 0x01, //0x000000ca orq $1, %rax
0x48, 0x8d, 0x15, 0x3b, 0x04, 0x00, 0x00, //0x000000ce leaq $1083(%rip), %rdx /* _Digits+0(%rip) */
0x8a, 0x04, 0x10, //0x000000d5 movb (%rax,%rdx), %al
0x89, 0xca, //0x000000d8 movl %ecx, %edx
0xff, 0xc1, //0x000000da incl %ecx
0x88, 0x04, 0x17, //0x000000dc movb %al, (%rdi,%rdx)
0x89, 0xc8, //0x000000df movl %ecx, %eax
0x5d, //0x000000e1 popq %rbp
0xc3, //0x000000e2 retq
//0x000000e3 LBB0_5
0x31, 0xc9, //0x000000e3 xorl %ecx, %ecx
0x83, 0xfe, 0x0a, //0x000000e5 cmpl $10, %esi
0x0f, 0x83, 0xc8, 0xff, 0xff, 0xff, //0x000000e8 jae LBB0_6
0xe9, 0xd4, 0xff, 0xff, 0xff, //0x000000ee jmp LBB0_7
//0x000000f3 LBB0_8
0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x000000f3 cmpq $99999999, %rsi
0x0f, 0x87, 0x1e, 0x01, 0x00, 0x00, //0x000000fa ja LBB0_16
0x89, 0xf0, //0x00000100 movl %esi, %eax
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x00000102 movl $3518437209, %edx
0x48, 0x0f, 0xaf, 0xd0, //0x00000107 imulq %rax, %rdx
0x48, 0xc1, 0xea, 0x2d, //0x0000010b shrq $45, %rdx
0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x0000010f imull $10000, %edx, %r8d
0x89, 0xf1, //0x00000116 movl %esi, %ecx
0x44, 0x29, 0xc1, //0x00000118 subl %r8d, %ecx
0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000011b imulq $1125899907, %rax, %r10
0x49, 0xc1, 0xea, 0x31, //0x00000122 shrq $49, %r10
0x41, 0x83, 0xe2, 0xfe, //0x00000126 andl $-2, %r10d
0x0f, 0xb7, 0xc2, //0x0000012a movzwl %dx, %eax
0xc1, 0xe8, 0x02, //0x0000012d shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000130 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000136 shrl $17, %eax
0x6b, 0xc0, 0x64, //0x00000139 imull $100, %eax, %eax
0x29, 0xc2, //0x0000013c subl %eax, %edx
0x44, 0x0f, 0xb7, 0xca, //0x0000013e movzwl %dx, %r9d
0x4d, 0x01, 0xc9, //0x00000142 addq %r9, %r9
0x0f, 0xb7, 0xc1, //0x00000145 movzwl %cx, %eax
0xc1, 0xe8, 0x02, //0x00000148 shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000014b imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x00000151 shrl $17, %eax
0x4c, 0x8d, 0x04, 0x00, //0x00000154 leaq (%rax,%rax), %r8
0x6b, 0xc0, 0x64, //0x00000158 imull $100, %eax, %eax
0x29, 0xc1, //0x0000015b subl %eax, %ecx
0x44, 0x0f, 0xb7, 0xd9, //0x0000015d movzwl %cx, %r11d
0x4d, 0x01, 0xdb, //0x00000161 addq %r11, %r11
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x00000164 cmpl $10000000, %esi
0x0f, 0x82, 0x17, 0x00, 0x00, 0x00, //0x0000016a jb LBB0_11
0x48, 0x8d, 0x05, 0x99, 0x03, 0x00, 0x00, //0x00000170 leaq $921(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x02, //0x00000177 movb (%r10,%rax), %al
0x88, 0x07, //0x0000017b movb %al, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000017d movl $1, %ecx
0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00000182 jmp LBB0_12
//0x00000187 LBB0_11
0x31, 0xc9, //0x00000187 xorl %ecx, %ecx
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x00000189 cmpl $1000000, %esi
0x0f, 0x82, 0x76, 0x00, 0x00, 0x00, //0x0000018f jb LBB0_13
//0x00000195 LBB0_12
0x44, 0x89, 0xd0, //0x00000195 movl %r10d, %eax
0x48, 0x83, 0xc8, 0x01, //0x00000198 orq $1, %rax
0x48, 0x8d, 0x35, 0x6d, 0x03, 0x00, 0x00, //0x0000019c leaq $877(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x000001a3 movb (%rax,%rsi), %al
0x89, 0xce, //0x000001a6 movl %ecx, %esi
0xff, 0xc1, //0x000001a8 incl %ecx
0x88, 0x04, 0x37, //0x000001aa movb %al, (%rdi,%rsi)
//0x000001ad LBB0_14
0x48, 0x8d, 0x05, 0x5c, 0x03, 0x00, 0x00, //0x000001ad leaq $860(%rip), %rax /* _Digits+0(%rip) */
0x41, 0x8a, 0x04, 0x01, //0x000001b4 movb (%r9,%rax), %al
0x89, 0xce, //0x000001b8 movl %ecx, %esi
0xff, 0xc1, //0x000001ba incl %ecx
0x88, 0x04, 0x37, //0x000001bc movb %al, (%rdi,%rsi)
//0x000001bf LBB0_15
0x41, 0x0f, 0xb7, 0xc1, //0x000001bf movzwl %r9w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000001c3 orq $1, %rax
0x48, 0x8d, 0x35, 0x42, 0x03, 0x00, 0x00, //0x000001c7 leaq $834(%rip), %rsi /* _Digits+0(%rip) */
0x8a, 0x04, 0x30, //0x000001ce movb (%rax,%rsi), %al
0x89, 0xca, //0x000001d1 movl %ecx, %edx
0x88, 0x04, 0x3a, //0x000001d3 movb %al, (%rdx,%rdi)
0x41, 0x8a, 0x04, 0x30, //0x000001d6 movb (%r8,%rsi), %al
0x88, 0x44, 0x3a, 0x01, //0x000001da movb %al, $1(%rdx,%rdi)
0x41, 0x0f, 0xb7, 0xc0, //0x000001de movzwl %r8w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000001e2 orq $1, %rax
0x8a, 0x04, 0x30, //0x000001e6 movb (%rax,%rsi), %al
0x88, 0x44, 0x3a, 0x02, //0x000001e9 movb %al, $2(%rdx,%rdi)
0x41, 0x8a, 0x04, 0x33, //0x000001ed movb (%r11,%rsi), %al
0x88, 0x44, 0x3a, 0x03, //0x000001f1 movb %al, $3(%rdx,%rdi)
0x41, 0x0f, 0xb7, 0xc3, //0x000001f5 movzwl %r11w, %eax
0x48, 0x83, 0xc8, 0x01, //0x000001f9 orq $1, %rax
0x8a, 0x04, 0x30, //0x000001fd movb (%rax,%rsi), %al
0x83, 0xc1, 0x05, //0x00000200 addl $5, %ecx
0x88, 0x44, 0x3a, 0x04, //0x00000203 movb %al, $4(%rdx,%rdi)
0x89, 0xc8, //0x00000207 movl %ecx, %eax
0x5d, //0x00000209 popq %rbp
0xc3, //0x0000020a retq
//0x0000020b LBB0_13
0x31, 0xc9, //0x0000020b xorl %ecx, %ecx
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x0000020d cmpl $100000, %esi
0x0f, 0x83, 0x94, 0xff, 0xff, 0xff, //0x00000213 jae LBB0_14
0xe9, 0xa1, 0xff, 0xff, 0xff, //0x00000219 jmp LBB0_15
//0x0000021e LBB0_16
0x48, 0xb8, 0xff, 0xff, 0xc0, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000021e movabsq $9999999999999999, %rax
0x48, 0x39, 0xc6, //0x00000228 cmpq %rax, %rsi
0x0f, 0x87, 0x05, 0x01, 0x00, 0x00, //0x0000022b ja LBB0_18
0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000231 movabsq $-6067343680855748867, %rcx
0x48, 0x89, 0xf0, //0x0000023b movq %rsi, %rax
0x48, 0xf7, 0xe1, //0x0000023e mulq %rcx
0x48, 0xc1, 0xea, 0x1a, //0x00000241 shrq $26, %rdx
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000245 imull $100000000, %edx, %eax
0x29, 0xc6, //0x0000024b subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xc2, //0x0000024d vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0xa7, 0xfd, 0xff, 0xff, //0x00000251 vmovdqu $-601(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x00000259 vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x0000025d vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x00000262 movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000267 vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x0000026c vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x00000270 vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x00000274 vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000278 vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x0000027d vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x00000282 vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0xa1, 0xfd, 0xff, 0xff, //0x00000287 vmovddup $-607(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x0000028f vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0x9d, 0xfd, 0xff, 0xff, //0x00000293 vmovddup $-611(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x0000029b vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0x69, 0xfd, 0xff, 0xff, //0x0000029f vmovdqu $-663(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x000002a7 vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000002ab vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x000002b0 vpsubw %xmm6, %xmm0, %xmm0
0xc5, 0xf9, 0x6e, 0xf6, //0x000002b4 vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x000002b8 vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000002bc vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x000002c1 vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x000002c5 vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x000002c9 vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000002cd vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000002d2 vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000002d7 vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x000002dc vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x000002e0 vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x000002e4 vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000002e8 vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x000002ed vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x000002f1 vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x0d, 0x23, 0xfd, 0xff, 0xff, //0x000002f5 vpaddb $-733(%rip), %xmm0, %xmm1 /* LCPI0_4+0(%rip) */
0xc5, 0xe9, 0xef, 0xd2, //0x000002fd vpxor %xmm2, %xmm2, %xmm2
0xc5, 0xf9, 0x74, 0xc2, //0x00000301 vpcmpeqb %xmm2, %xmm0, %xmm0
0xc5, 0xf9, 0xd7, 0xc0, //0x00000305 vpmovmskb %xmm0, %eax
0x0d, 0x00, 0x80, 0x00, 0x00, //0x00000309 orl $32768, %eax
0x35, 0xff, 0x7f, 0xff, 0xff, //0x0000030e xorl $-32769, %eax
0x0f, 0xbc, 0xc0, //0x00000313 bsfl %eax, %eax
0xb9, 0x10, 0x00, 0x00, 0x00, //0x00000316 movl $16, %ecx
0x29, 0xc1, //0x0000031b subl %eax, %ecx
0x48, 0xc1, 0xe0, 0x04, //0x0000031d shlq $4, %rax
0x48, 0x8d, 0x15, 0xb8, 0x02, 0x00, 0x00, //0x00000321 leaq $696(%rip), %rdx /* _VecShiftShuffles+0(%rip) */
0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x00000328 vpshufb (%rax,%rdx), %xmm1, %xmm0
0xc5, 0xfa, 0x7f, 0x07, //0x0000032e vmovdqu %xmm0, (%rdi)
0x89, 0xc8, //0x00000332 movl %ecx, %eax
0x5d, //0x00000334 popq %rbp
0xc3, //0x00000335 retq
//0x00000336 LBB0_18
0x48, 0xb9, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x00000336 movabsq $4153837486827862103, %rcx
0x48, 0x89, 0xf0, //0x00000340 movq %rsi, %rax
0x48, 0xf7, 0xe1, //0x00000343 mulq %rcx
0x48, 0xc1, 0xea, 0x33, //0x00000346 shrq $51, %rdx
0x48, 0xb8, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000034a movabsq $10000000000000000, %rax
0x48, 0x0f, 0xaf, 0xc2, //0x00000354 imulq %rdx, %rax
0x48, 0x29, 0xc6, //0x00000358 subq %rax, %rsi
0x83, 0xfa, 0x09, //0x0000035b cmpl $9, %edx
0x0f, 0x87, 0x0f, 0x00, 0x00, 0x00, //0x0000035e ja LBB0_20
0x80, 0xc2, 0x30, //0x00000364 addb $48, %dl
0x88, 0x17, //0x00000367 movb %dl, (%rdi)
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000369 movl $1, %ecx
0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000036e jmp LBB0_25
//0x00000373 LBB0_20
0x83, 0xfa, 0x63, //0x00000373 cmpl $99, %edx
0x0f, 0x87, 0x1f, 0x00, 0x00, 0x00, //0x00000376 ja LBB0_22
0x89, 0xd0, //0x0000037c movl %edx, %eax
0x48, 0x8d, 0x0d, 0x8b, 0x01, 0x00, 0x00, //0x0000037e leaq $395(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x00000385 movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x00000388 movb $1(%rcx,%rax,2), %al
0x88, 0x17, //0x0000038c movb %dl, (%rdi)
0x88, 0x47, 0x01, //0x0000038e movb %al, $1(%rdi)
0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000391 movl $2, %ecx
0xe9, 0x92, 0x00, 0x00, 0x00, //0x00000396 jmp LBB0_25
//0x0000039b LBB0_22
0x89, 0xd0, //0x0000039b movl %edx, %eax
0xc1, 0xe8, 0x02, //0x0000039d shrl $2, %eax
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000003a0 imull $5243, %eax, %eax
0xc1, 0xe8, 0x11, //0x000003a6 shrl $17, %eax
0x81, 0xfa, 0xe7, 0x03, 0x00, 0x00, //0x000003a9 cmpl $999, %edx
0x0f, 0x87, 0x3c, 0x00, 0x00, 0x00, //0x000003af ja LBB0_24
0x83, 0xc0, 0x30, //0x000003b5 addl $48, %eax
0x88, 0x07, //0x000003b8 movb %al, (%rdi)
0x0f, 0xb7, 0xc2, //0x000003ba movzwl %dx, %eax
0x89, 0xc1, //0x000003bd movl %eax, %ecx
0xc1, 0xe9, 0x02, //0x000003bf shrl $2, %ecx
0x69, 0xc9, 0x7b, 0x14, 0x00, 0x00, //0x000003c2 imull $5243, %ecx, %ecx
0xc1, 0xe9, 0x11, //0x000003c8 shrl $17, %ecx
0x6b, 0xc9, 0x64, //0x000003cb imull $100, %ecx, %ecx
0x29, 0xc8, //0x000003ce subl %ecx, %eax
0x0f, 0xb7, 0xc0, //0x000003d0 movzwl %ax, %eax
0x48, 0x8d, 0x0d, 0x36, 0x01, 0x00, 0x00, //0x000003d3 leaq $310(%rip), %rcx /* _Digits+0(%rip) */
0x8a, 0x14, 0x41, //0x000003da movb (%rcx,%rax,2), %dl
0x8a, 0x44, 0x41, 0x01, //0x000003dd movb $1(%rcx,%rax,2), %al
0x88, 0x57, 0x01, //0x000003e1 movb %dl, $1(%rdi)
0x88, 0x47, 0x02, //0x000003e4 movb %al, $2(%rdi)
0xb9, 0x03, 0x00, 0x00, 0x00, //0x000003e7 movl $3, %ecx
0xe9, 0x3c, 0x00, 0x00, 0x00, //0x000003ec jmp LBB0_25
//0x000003f1 LBB0_24
0x6b, 0xc8, 0x64, //0x000003f1 imull $100, %eax, %ecx
0x29, 0xca, //0x000003f4 subl %ecx, %edx
0x0f, 0xb7, 0xc0, //0x000003f6 movzwl %ax, %eax
0x4c, 0x8d, 0x05, 0x10, 0x01, 0x00, 0x00, //0x000003f9 leaq $272(%rip), %r8 /* _Digits+0(%rip) */
0x41, 0x8a, 0x0c, 0x40, //0x00000400 movb (%r8,%rax,2), %cl
0x41, 0x8a, 0x44, 0x40, 0x01, //0x00000404 movb $1(%r8,%rax,2), %al
0x88, 0x0f, //0x00000409 movb %cl, (%rdi)
0x88, 0x47, 0x01, //0x0000040b movb %al, $1(%rdi)
0x0f, 0xb7, 0xc2, //0x0000040e movzwl %dx, %eax
0x41, 0x8a, 0x0c, 0x40, //0x00000411 movb (%r8,%rax,2), %cl
0x48, 0x01, 0xc0, //0x00000415 addq %rax, %rax
0x88, 0x4f, 0x02, //0x00000418 movb %cl, $2(%rdi)
0x83, 0xc8, 0x01, //0x0000041b orl $1, %eax
0x0f, 0xb7, 0xc0, //0x0000041e movzwl %ax, %eax
0x42, 0x8a, 0x04, 0x00, //0x00000421 movb (%rax,%r8), %al
0x88, 0x47, 0x03, //0x00000425 movb %al, $3(%rdi)
0xb9, 0x04, 0x00, 0x00, 0x00, //0x00000428 movl $4, %ecx
//0x0000042d LBB0_25
0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000042d movabsq $-6067343680855748867, %rdx
0x48, 0x89, 0xf0, //0x00000437 movq %rsi, %rax
0x48, 0xf7, 0xe2, //0x0000043a mulq %rdx
0x48, 0xc1, 0xea, 0x1a, //0x0000043d shrq $26, %rdx
0xc5, 0xf9, 0x6e, 0xc2, //0x00000441 vmovd %edx, %xmm0
0xc5, 0xfa, 0x6f, 0x0d, 0xb3, 0xfb, 0xff, 0xff, //0x00000445 vmovdqu $-1101(%rip), %xmm1 /* LCPI0_0+0(%rip) */
0xc5, 0xf9, 0xf4, 0xd1, //0x0000044d vpmuludq %xmm1, %xmm0, %xmm2
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x00000451 vpsrlq $45, %xmm2, %xmm2
0xb8, 0x10, 0x27, 0x00, 0x00, //0x00000456 movl $10000, %eax
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x0000045b vmovq %rax, %xmm3
0xc5, 0xe9, 0xf4, 0xe3, //0x00000460 vpmuludq %xmm3, %xmm2, %xmm4
0xc5, 0xf9, 0xfa, 0xc4, //0x00000464 vpsubd %xmm4, %xmm0, %xmm0
0xc5, 0xe9, 0x61, 0xc0, //0x00000468 vpunpcklwd %xmm0, %xmm2, %xmm0
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x0000046c vpsllq $2, %xmm0, %xmm0
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000471 vpshuflw $80, %xmm0, %xmm0
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x00000476 vpshufd $80, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x15, 0xad, 0xfb, 0xff, 0xff, //0x0000047b vmovddup $-1107(%rip), %xmm2 /* LCPI0_1+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc2, //0x00000483 vpmulhuw %xmm2, %xmm0, %xmm0
0xc5, 0xfb, 0x12, 0x25, 0xa9, 0xfb, 0xff, 0xff, //0x00000487 vmovddup $-1111(%rip), %xmm4 /* LCPI0_2+0(%rip) */
0xc5, 0xf9, 0xe4, 0xc4, //0x0000048f vpmulhuw %xmm4, %xmm0, %xmm0
0xc5, 0xfa, 0x6f, 0x2d, 0x75, 0xfb, 0xff, 0xff, //0x00000493 vmovdqu $-1163(%rip), %xmm5 /* LCPI0_3+0(%rip) */
0xc5, 0xf9, 0xd5, 0xf5, //0x0000049b vpmullw %xmm5, %xmm0, %xmm6
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x0000049f vpsllq $16, %xmm6, %xmm6
0xc5, 0xf9, 0xf9, 0xc6, //0x000004a4 vpsubw %xmm6, %xmm0, %xmm0
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x000004a8 imull $100000000, %edx, %eax
0x29, 0xc6, //0x000004ae subl %eax, %esi
0xc5, 0xf9, 0x6e, 0xf6, //0x000004b0 vmovd %esi, %xmm6
0xc5, 0xc9, 0xf4, 0xc9, //0x000004b4 vpmuludq %xmm1, %xmm6, %xmm1
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000004b8 vpsrlq $45, %xmm1, %xmm1
0xc5, 0xf1, 0xf4, 0xdb, //0x000004bd vpmuludq %xmm3, %xmm1, %xmm3
0xc5, 0xc9, 0xfa, 0xdb, //0x000004c1 vpsubd %xmm3, %xmm6, %xmm3
0xc5, 0xf1, 0x61, 0xcb, //0x000004c5 vpunpcklwd %xmm3, %xmm1, %xmm1
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000004c9 vpsllq $2, %xmm1, %xmm1
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000004ce vpshuflw $80, %xmm1, %xmm1
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000004d3 vpshufd $80, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xca, //0x000004d8 vpmulhuw %xmm2, %xmm1, %xmm1
0xc5, 0xf1, 0xe4, 0xcc, //0x000004dc vpmulhuw %xmm4, %xmm1, %xmm1
0xc5, 0xf1, 0xd5, 0xd5, //0x000004e0 vpmullw %xmm5, %xmm1, %xmm2
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000004e4 vpsllq $16, %xmm2, %xmm2
0xc5, 0xf1, 0xf9, 0xca, //0x000004e9 vpsubw %xmm2, %xmm1, %xmm1
0xc5, 0xf9, 0x67, 0xc1, //0x000004ed vpackuswb %xmm1, %xmm0, %xmm0
0xc5, 0xf9, 0xfc, 0x05, 0x27, 0xfb, 0xff, 0xff, //0x000004f1 vpaddb $-1241(%rip), %xmm0, %xmm0 /* LCPI0_4+0(%rip) */
0x89, 0xc8, //0x000004f9 movl %ecx, %eax
0xc5, 0xfa, 0x7f, 0x04, 0x07, //0x000004fb vmovdqu %xmm0, (%rdi,%rax)
0x83, 0xc9, 0x10, //0x00000500 orl $16, %ecx
0x89, 0xc8, //0x00000503 movl %ecx, %eax
0x5d, //0x00000505 popq %rbp
0xc3, //0x00000506 retq
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000507 .p2align 4, 0x00
//0x00000510 _Digits
0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000510 QUAD $0x3330323031303030; QUAD $0x3730363035303430 // .ascii 16, '0001020304050607'
0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000520 QUAD $0x3131303139303830; QUAD $0x3531343133313231 // .ascii 16, '0809101112131415'
0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000530 QUAD $0x3931383137313631; QUAD $0x3332323231323032 // .ascii 16, '1617181920212223'
0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000540 QUAD $0x3732363235323432; QUAD $0x3133303339323832 // .ascii 16, '2425262728293031'
0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000550 QUAD $0x3533343333333233; QUAD $0x3933383337333633 // .ascii 16, '3233343536373839'
0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000560 QUAD $0x3334323431343034; QUAD $0x3734363435343434 // .ascii 16, '4041424344454647'
0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000570 QUAD $0x3135303539343834; QUAD $0x3535343533353235 // .ascii 16, '4849505152535455'
0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000580 QUAD $0x3935383537353635; QUAD $0x3336323631363036 // .ascii 16, '5657585960616263'
0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x00000590 QUAD $0x3736363635363436; QUAD $0x3137303739363836 // .ascii 16, '6465666768697071'
0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x000005a0 QUAD $0x3537343733373237; QUAD $0x3937383737373637 // .ascii 16, '7273747576777879'
0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x000005b0 QUAD $0x3338323831383038; QUAD $0x3738363835383438 // .ascii 16, '8081828384858687'
0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x000005c0 QUAD $0x3139303939383838; QUAD $0x3539343933393239 // .ascii 16, '8889909192939495'
0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x000005d0 QUAD $0x3939383937393639 // .ascii 8, '96979899'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005d8 .p2align 4, 0x00
//0x000005e0 _VecShiftShuffles
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, //0x000005e0 QUAD $0x0706050403020100; QUAD $0x0f0e0d0c0b0a0908 // .ascii 16, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, //0x000005f0 QUAD $0x0807060504030201; QUAD $0xff0f0e0d0c0b0a09 // .ascii 16, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, //0x00000600 QUAD $0x0908070605040302; QUAD $0xffff0f0e0d0c0b0a // .ascii 16, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, //0x00000610 QUAD $0x0a09080706050403; QUAD $0xffffff0f0e0d0c0b // .ascii 16, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, //0x00000620 QUAD $0x0b0a090807060504; QUAD $0xffffffff0f0e0d0c // .ascii 16, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000630 QUAD $0x0c0b0a0908070605; QUAD $0xffffffffff0f0e0d // .ascii 16, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000640 QUAD $0x0d0c0b0a09080706; QUAD $0xffffffffffff0f0e // .ascii 16, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000650 QUAD $0x0e0d0c0b0a090807; QUAD $0xffffffffffffff0f // .ascii 16, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000660 QUAD $0x0f0e0d0c0b0a0908; QUAD $0xffffffffffffffff // .ascii 16, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
}

View File

@ -0,0 +1,36 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/rt`
)
var F_unquote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep unsafe.Pointer, flags uint64) (ret int)
var S_unquote uintptr
//go:nosplit
func unquote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep *int, flags uint64) (ret int) {
return F_unquote(rt.NoEscape(sp), nb, dp, rt.NoEscape(unsafe.Pointer(ep)), flags)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__unquote = 16
)
const (
_stack__unquote = 88
)
const (
_size__unquote = 2272
)
var (
_pcsp__unquote = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{1684, 88},
{1688, 48},
{1689, 40},
{1691, 32},
{1693, 24},
{1695, 16},
{1697, 8},
{1698, 0},
{2270, 88},
}
)
var _cfunc_unquote = []loader.CFunc{
{"_unquote_entry", 0, _entry__unquote, 0, nil},
{"_unquote", _entry__unquote, _size__unquote, _stack__unquote, _pcsp__unquote},
}

View File

@ -0,0 +1,639 @@
// +build amd64
// Code generated by asm2asm, DO NOT EDIT.
package avx
var _text_unquote = []byte{
// .p2align 4, 0x00
// LCPI0_0
0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, // QUAD $0x5c5c5c5c5c5c5c5c; QUAD $0x5c5c5c5c5c5c5c5c // .space 16, '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
//0x00000010 .p2align 4, 0x90
//0x00000010 _unquote
0x55, //0x00000010 pushq %rbp
0x48, 0x89, 0xe5, //0x00000011 movq %rsp, %rbp
0x41, 0x57, //0x00000014 pushq %r15
0x41, 0x56, //0x00000016 pushq %r14
0x41, 0x55, //0x00000018 pushq %r13
0x41, 0x54, //0x0000001a pushq %r12
0x53, //0x0000001c pushq %rbx
0x48, 0x83, 0xec, 0x28, //0x0000001d subq $40, %rsp
0x48, 0x85, 0xf6, //0x00000021 testq %rsi, %rsi
0x0f, 0x84, 0x6e, 0x06, 0x00, 0x00, //0x00000024 je LBB0_82
0x49, 0x89, 0xf3, //0x0000002a movq %rsi, %r11
0x48, 0x89, 0x4d, 0xc8, //0x0000002d movq %rcx, $-56(%rbp)
0x4c, 0x89, 0xc0, //0x00000031 movq %r8, %rax
0x4c, 0x89, 0x45, 0xb8, //0x00000034 movq %r8, $-72(%rbp)
0x45, 0x89, 0xc2, //0x00000038 movl %r8d, %r10d
0x41, 0x83, 0xe2, 0x01, //0x0000003b andl $1, %r10d
0x4c, 0x8d, 0x05, 0xaa, 0x08, 0x00, 0x00, //0x0000003f leaq $2218(%rip), %r8 /* __UnquoteTab+0(%rip) */
0xc5, 0xfa, 0x6f, 0x05, 0xb2, 0xff, 0xff, 0xff, //0x00000046 vmovdqu $-78(%rip), %xmm0 /* LCPI0_0+0(%rip) */
0x49, 0x89, 0xf9, //0x0000004e movq %rdi, %r9
0x49, 0x89, 0xf5, //0x00000051 movq %rsi, %r13
0x48, 0x89, 0xd0, //0x00000054 movq %rdx, %rax
//0x00000057 LBB0_2
0x41, 0x80, 0x39, 0x5c, //0x00000057 cmpb $92, (%r9)
0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000005b jne LBB0_4
0x31, 0xf6, //0x00000061 xorl %esi, %esi
0xe9, 0xc8, 0x00, 0x00, 0x00, //0x00000063 jmp LBB0_13
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000068 .p2align 4, 0x90
//0x00000070 LBB0_4
0x4d, 0x89, 0xef, //0x00000070 movq %r13, %r15
0x48, 0x89, 0xc6, //0x00000073 movq %rax, %rsi
0x4d, 0x89, 0xce, //0x00000076 movq %r9, %r14
0x49, 0x83, 0xfd, 0x10, //0x00000079 cmpq $16, %r13
0x0f, 0x8c, 0x3d, 0x00, 0x00, 0x00, //0x0000007d jl LBB0_7
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000083 .p2align 4, 0x90
//0x00000090 LBB0_5
0xc4, 0xc1, 0x7a, 0x6f, 0x0e, //0x00000090 vmovdqu (%r14), %xmm1
0xc5, 0xfa, 0x7f, 0x0e, //0x00000095 vmovdqu %xmm1, (%rsi)
0xc5, 0xf1, 0x74, 0xc8, //0x00000099 vpcmpeqb %xmm0, %xmm1, %xmm1
0xc5, 0xf9, 0xd7, 0xd9, //0x0000009d vpmovmskb %xmm1, %ebx
0x66, 0x85, 0xdb, //0x000000a1 testw %bx, %bx
0x0f, 0x85, 0x60, 0x00, 0x00, 0x00, //0x000000a4 jne LBB0_12
0x49, 0x83, 0xc6, 0x10, //0x000000aa addq $16, %r14
0x48, 0x83, 0xc6, 0x10, //0x000000ae addq $16, %rsi
0x49, 0x83, 0xff, 0x1f, //0x000000b2 cmpq $31, %r15
0x4d, 0x8d, 0x7f, 0xf0, //0x000000b6 leaq $-16(%r15), %r15
0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000000ba jg LBB0_5
//0x000000c0 LBB0_7
0x4d, 0x85, 0xff, //0x000000c0 testq %r15, %r15
0x0f, 0x84, 0xd5, 0x05, 0x00, 0x00, //0x000000c3 je LBB0_83
0x31, 0xdb, //0x000000c9 xorl %ebx, %ebx
0x90, 0x90, 0x90, 0x90, 0x90, //0x000000cb .p2align 4, 0x90
//0x000000d0 LBB0_9
0x41, 0x0f, 0xb6, 0x0c, 0x1e, //0x000000d0 movzbl (%r14,%rbx), %ecx
0x80, 0xf9, 0x5c, //0x000000d5 cmpb $92, %cl
0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000000d8 je LBB0_11
0x88, 0x0c, 0x1e, //0x000000de movb %cl, (%rsi,%rbx)
0x48, 0xff, 0xc3, //0x000000e1 incq %rbx
0x49, 0x39, 0xdf, //0x000000e4 cmpq %rbx, %r15
0x0f, 0x85, 0xe3, 0xff, 0xff, 0xff, //0x000000e7 jne LBB0_9
0xe9, 0xac, 0x05, 0x00, 0x00, //0x000000ed jmp LBB0_83
//0x000000f2 LBB0_11
0x49, 0x01, 0xde, //0x000000f2 addq %rbx, %r14
0x4d, 0x29, 0xce, //0x000000f5 subq %r9, %r14
0x4c, 0x89, 0xf6, //0x000000f8 movq %r14, %rsi
0x48, 0x83, 0xfe, 0xff, //0x000000fb cmpq $-1, %rsi
0x0f, 0x85, 0x2b, 0x00, 0x00, 0x00, //0x000000ff jne LBB0_13
0xe9, 0x94, 0x05, 0x00, 0x00, //0x00000105 jmp LBB0_83
//0x0000010a LBB0_12
0x0f, 0xb7, 0xcb, //0x0000010a movzwl %bx, %ecx
0x4d, 0x29, 0xce, //0x0000010d subq %r9, %r14
0x48, 0x0f, 0xbc, 0xf1, //0x00000110 bsfq %rcx, %rsi
0x4c, 0x01, 0xf6, //0x00000114 addq %r14, %rsi
0x48, 0x83, 0xfe, 0xff, //0x00000117 cmpq $-1, %rsi
0x0f, 0x84, 0x7d, 0x05, 0x00, 0x00, //0x0000011b je LBB0_83
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000121 .p2align 4, 0x90
//0x00000130 LBB0_13
0x48, 0x8d, 0x4e, 0x02, //0x00000130 leaq $2(%rsi), %rcx
0x49, 0x29, 0xcd, //0x00000134 subq %rcx, %r13
0x0f, 0x88, 0x2a, 0x06, 0x00, 0x00, //0x00000137 js LBB0_94
0x4d, 0x8d, 0x4c, 0x31, 0x02, //0x0000013d leaq $2(%r9,%rsi), %r9
0x4d, 0x85, 0xd2, //0x00000142 testq %r10, %r10
0x0f, 0x85, 0xe5, 0x03, 0x00, 0x00, //0x00000145 jne LBB0_58
//0x0000014b LBB0_15
0x48, 0x01, 0xf0, //0x0000014b addq %rsi, %rax
0x41, 0x0f, 0xb6, 0x49, 0xff, //0x0000014e movzbl $-1(%r9), %ecx
0x42, 0x8a, 0x0c, 0x01, //0x00000153 movb (%rcx,%r8), %cl
0x80, 0xf9, 0xff, //0x00000157 cmpb $-1, %cl
0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x0000015a je LBB0_18
0x84, 0xc9, //0x00000160 testb %cl, %cl
0x0f, 0x84, 0x12, 0x06, 0x00, 0x00, //0x00000162 je LBB0_95
0x88, 0x08, //0x00000168 movb %cl, (%rax)
0x48, 0xff, 0xc0, //0x0000016a incq %rax
0xe9, 0xb0, 0x03, 0x00, 0x00, //0x0000016d jmp LBB0_57
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000172 .p2align 4, 0x90
//0x00000180 LBB0_18
0x49, 0x83, 0xfd, 0x03, //0x00000180 cmpq $3, %r13
0x0f, 0x8e, 0xdd, 0x05, 0x00, 0x00, //0x00000184 jle LBB0_94
0x41, 0x8b, 0x31, //0x0000018a movl (%r9), %esi
0x89, 0xf1, //0x0000018d movl %esi, %ecx
0xf7, 0xd1, //0x0000018f notl %ecx
0x8d, 0x9e, 0xd0, 0xcf, 0xcf, 0xcf, //0x00000191 leal $-808464432(%rsi), %ebx
0x81, 0xe1, 0x80, 0x80, 0x80, 0x80, //0x00000197 andl $-2139062144, %ecx
0x85, 0xd9, //0x0000019d testl %ebx, %ecx
0x0f, 0x85, 0x0e, 0x05, 0x00, 0x00, //0x0000019f jne LBB0_85
0x8d, 0x9e, 0x19, 0x19, 0x19, 0x19, //0x000001a5 leal $421075225(%rsi), %ebx
0x09, 0xf3, //0x000001ab orl %esi, %ebx
0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x000001ad testl $-2139062144, %ebx
0x0f, 0x85, 0xfa, 0x04, 0x00, 0x00, //0x000001b3 jne LBB0_85
0x89, 0xf3, //0x000001b9 movl %esi, %ebx
0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x000001bb andl $2139062143, %ebx
0x41, 0xbe, 0xc0, 0xc0, 0xc0, 0xc0, //0x000001c1 movl $-1061109568, %r14d
0x41, 0x29, 0xde, //0x000001c7 subl %ebx, %r14d
0x44, 0x8d, 0xbb, 0x46, 0x46, 0x46, 0x46, //0x000001ca leal $1179010630(%rbx), %r15d
0x41, 0x21, 0xce, //0x000001d1 andl %ecx, %r14d
0x45, 0x85, 0xfe, //0x000001d4 testl %r15d, %r14d
0x0f, 0x85, 0xd6, 0x04, 0x00, 0x00, //0x000001d7 jne LBB0_85
0x41, 0xbe, 0xe0, 0xe0, 0xe0, 0xe0, //0x000001dd movl $-522133280, %r14d
0x41, 0x29, 0xde, //0x000001e3 subl %ebx, %r14d
0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x000001e6 addl $960051513, %ebx
0x44, 0x21, 0xf1, //0x000001ec andl %r14d, %ecx
0x85, 0xd9, //0x000001ef testl %ebx, %ecx
0x0f, 0x85, 0xbc, 0x04, 0x00, 0x00, //0x000001f1 jne LBB0_85
0x0f, 0xce, //0x000001f7 bswapl %esi
0x89, 0xf1, //0x000001f9 movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x000001fb shrl $4, %ecx
0xf7, 0xd1, //0x000001fe notl %ecx
0x81, 0xe1, 0x01, 0x01, 0x01, 0x01, //0x00000200 andl $16843009, %ecx
0x8d, 0x0c, 0xc9, //0x00000206 leal (%rcx,%rcx,8), %ecx
0x81, 0xe6, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000209 andl $252645135, %esi
0x01, 0xce, //0x0000020f addl %ecx, %esi
0x89, 0xf1, //0x00000211 movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x00000213 shrl $4, %ecx
0x09, 0xf1, //0x00000216 orl %esi, %ecx
0x44, 0x0f, 0xb6, 0xf9, //0x00000218 movzbl %cl, %r15d
0xc1, 0xe9, 0x08, //0x0000021c shrl $8, %ecx
0x81, 0xe1, 0x00, 0xff, 0x00, 0x00, //0x0000021f andl $65280, %ecx
0x41, 0x09, 0xcf, //0x00000225 orl %ecx, %r15d
0x4d, 0x8d, 0x75, 0xfc, //0x00000228 leaq $-4(%r13), %r14
0x41, 0x81, 0xff, 0x80, 0x00, 0x00, 0x00, //0x0000022c cmpl $128, %r15d
0x0f, 0x82, 0x46, 0x03, 0x00, 0x00, //0x00000233 jb LBB0_66
0x45, 0x31, 0xe4, //0x00000239 xorl %r12d, %r12d
0x4d, 0x85, 0xd2, //0x0000023c testq %r10, %r10
0x0f, 0x84, 0x5b, 0x01, 0x00, 0x00, //0x0000023f je LBB0_40
//0x00000245 LBB0_25
0x41, 0x81, 0xff, 0x00, 0x08, 0x00, 0x00, //0x00000245 cmpl $2048, %r15d
0x0f, 0x82, 0x3c, 0x03, 0x00, 0x00, //0x0000024c jb LBB0_68
0x44, 0x89, 0xf9, //0x00000252 movl %r15d, %ecx
0x81, 0xe1, 0x00, 0xf8, 0xff, 0xff, //0x00000255 andl $-2048, %ecx
0x81, 0xf9, 0x00, 0xd8, 0x00, 0x00, //0x0000025b cmpl $55296, %ecx
0x0f, 0x85, 0x89, 0x02, 0x00, 0x00, //0x00000261 jne LBB0_54
0x4d, 0x85, 0xf6, //0x00000267 testq %r14, %r14
0x0f, 0x8e, 0x6b, 0x03, 0x00, 0x00, //0x0000026a jle LBB0_72
0x43, 0x80, 0x7c, 0x21, 0x04, 0x5c, //0x00000270 cmpb $92, $4(%r9,%r12)
0x0f, 0x85, 0x6e, 0x03, 0x00, 0x00, //0x00000276 jne LBB0_73
0x41, 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x0000027c cmpl $56319, %r15d
0x0f, 0x87, 0x34, 0x03, 0x00, 0x00, //0x00000283 ja LBB0_70
0x49, 0x83, 0xfe, 0x07, //0x00000289 cmpq $7, %r14
0x0f, 0x8c, 0x2a, 0x03, 0x00, 0x00, //0x0000028d jl LBB0_70
0x43, 0x80, 0x7c, 0x21, 0x05, 0x5c, //0x00000293 cmpb $92, $5(%r9,%r12)
0x0f, 0x85, 0x1e, 0x03, 0x00, 0x00, //0x00000299 jne LBB0_70
0x43, 0x80, 0x7c, 0x21, 0x06, 0x75, //0x0000029f cmpb $117, $6(%r9,%r12)
0x0f, 0x85, 0x12, 0x03, 0x00, 0x00, //0x000002a5 jne LBB0_70
0x43, 0x8b, 0x74, 0x21, 0x07, //0x000002ab movl $7(%r9,%r12), %esi
0x89, 0xf1, //0x000002b0 movl %esi, %ecx
0xf7, 0xd1, //0x000002b2 notl %ecx
0x8d, 0x9e, 0xd0, 0xcf, 0xcf, 0xcf, //0x000002b4 leal $-808464432(%rsi), %ebx
0x81, 0xe1, 0x80, 0x80, 0x80, 0x80, //0x000002ba andl $-2139062144, %ecx
0x85, 0xd9, //0x000002c0 testl %ebx, %ecx
0x0f, 0x85, 0xe8, 0x04, 0x00, 0x00, //0x000002c2 jne LBB0_99
0x8d, 0x9e, 0x19, 0x19, 0x19, 0x19, //0x000002c8 leal $421075225(%rsi), %ebx
0x09, 0xf3, //0x000002ce orl %esi, %ebx
0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x000002d0 testl $-2139062144, %ebx
0x0f, 0x85, 0xd4, 0x04, 0x00, 0x00, //0x000002d6 jne LBB0_99
0x89, 0xf3, //0x000002dc movl %esi, %ebx
0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x000002de andl $2139062143, %ebx
0xc7, 0x45, 0xd4, 0xc0, 0xc0, 0xc0, 0xc0, //0x000002e4 movl $-1061109568, $-44(%rbp)
0x29, 0x5d, 0xd4, //0x000002eb subl %ebx, $-44(%rbp)
0x48, 0x89, 0x75, 0xb0, //0x000002ee movq %rsi, $-80(%rbp)
0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x000002f2 leal $1179010630(%rbx), %esi
0x89, 0x75, 0xc4, //0x000002f8 movl %esi, $-60(%rbp)
0x21, 0x4d, 0xd4, //0x000002fb andl %ecx, $-44(%rbp)
0x8b, 0x75, 0xc4, //0x000002fe movl $-60(%rbp), %esi
0x85, 0x75, 0xd4, //0x00000301 testl %esi, $-44(%rbp)
0x48, 0x8b, 0x75, 0xb0, //0x00000304 movq $-80(%rbp), %rsi
0x0f, 0x85, 0xa2, 0x04, 0x00, 0x00, //0x00000308 jne LBB0_99
0xc7, 0x45, 0xd4, 0xe0, 0xe0, 0xe0, 0xe0, //0x0000030e movl $-522133280, $-44(%rbp)
0x29, 0x5d, 0xd4, //0x00000315 subl %ebx, $-44(%rbp)
0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x00000318 addl $960051513, %ebx
0x23, 0x4d, 0xd4, //0x0000031e andl $-44(%rbp), %ecx
0x85, 0xd9, //0x00000321 testl %ebx, %ecx
0x0f, 0x85, 0x87, 0x04, 0x00, 0x00, //0x00000323 jne LBB0_99
0x0f, 0xce, //0x00000329 bswapl %esi
0x89, 0xf1, //0x0000032b movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x0000032d shrl $4, %ecx
0xf7, 0xd1, //0x00000330 notl %ecx
0x81, 0xe1, 0x01, 0x01, 0x01, 0x01, //0x00000332 andl $16843009, %ecx
0x8d, 0x0c, 0xc9, //0x00000338 leal (%rcx,%rcx,8), %ecx
0x81, 0xe6, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000033b andl $252645135, %esi
0x01, 0xce, //0x00000341 addl %ecx, %esi
0x89, 0xf1, //0x00000343 movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x00000345 shrl $4, %ecx
0x09, 0xf1, //0x00000348 orl %esi, %ecx
0x89, 0xce, //0x0000034a movl %ecx, %esi
0xc1, 0xee, 0x08, //0x0000034c shrl $8, %esi
0x81, 0xe6, 0x00, 0xff, 0x00, 0x00, //0x0000034f andl $65280, %esi
0x0f, 0xb6, 0xd9, //0x00000355 movzbl %cl, %ebx
0x09, 0xf3, //0x00000358 orl %esi, %ebx
0x81, 0xe1, 0x00, 0x00, 0xfc, 0x00, //0x0000035a andl $16515072, %ecx
0x81, 0xf9, 0x00, 0x00, 0xdc, 0x00, //0x00000360 cmpl $14417920, %ecx
0x0f, 0x84, 0xac, 0x02, 0x00, 0x00, //0x00000366 je LBB0_77
0xf6, 0x45, 0xb8, 0x02, //0x0000036c testb $2, $-72(%rbp)
0x0f, 0x84, 0x41, 0x05, 0x00, 0x00, //0x00000370 je LBB0_114
0x49, 0x83, 0xc6, 0xf9, //0x00000376 addq $-7, %r14
0x66, 0xc7, 0x00, 0xef, 0xbf, //0x0000037a movw $-16401, (%rax)
0xc6, 0x40, 0x02, 0xbd, //0x0000037f movb $-67, $2(%rax)
0x48, 0x83, 0xc0, 0x03, //0x00000383 addq $3, %rax
0x49, 0x83, 0xc4, 0x07, //0x00000387 addq $7, %r12
0x41, 0x89, 0xdf, //0x0000038b movl %ebx, %r15d
0x83, 0xfb, 0x7f, //0x0000038e cmpl $127, %ebx
0x0f, 0x87, 0xae, 0xfe, 0xff, 0xff, //0x00000391 ja LBB0_25
0xe9, 0x44, 0x01, 0x00, 0x00, //0x00000397 jmp LBB0_53
0x90, 0x90, 0x90, 0x90, //0x0000039c .p2align 4, 0x90
//0x000003a0 LBB0_40
0x41, 0x81, 0xff, 0x00, 0x08, 0x00, 0x00, //0x000003a0 cmpl $2048, %r15d
0x0f, 0x82, 0xe1, 0x01, 0x00, 0x00, //0x000003a7 jb LBB0_68
0x44, 0x89, 0xf9, //0x000003ad movl %r15d, %ecx
0x81, 0xe1, 0x00, 0xf8, 0xff, 0xff, //0x000003b0 andl $-2048, %ecx
0x81, 0xf9, 0x00, 0xd8, 0x00, 0x00, //0x000003b6 cmpl $55296, %ecx
0x0f, 0x85, 0x2e, 0x01, 0x00, 0x00, //0x000003bc jne LBB0_54
0x41, 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x000003c2 cmpl $56319, %r15d
0x0f, 0x87, 0xe4, 0x01, 0x00, 0x00, //0x000003c9 ja LBB0_69
0x49, 0x83, 0xfe, 0x06, //0x000003cf cmpq $6, %r14
0x0f, 0x8c, 0xda, 0x01, 0x00, 0x00, //0x000003d3 jl LBB0_69
0x43, 0x80, 0x7c, 0x21, 0x04, 0x5c, //0x000003d9 cmpb $92, $4(%r9,%r12)
0x0f, 0x85, 0xce, 0x01, 0x00, 0x00, //0x000003df jne LBB0_69
0x43, 0x80, 0x7c, 0x21, 0x05, 0x75, //0x000003e5 cmpb $117, $5(%r9,%r12)
0x0f, 0x85, 0xc2, 0x01, 0x00, 0x00, //0x000003eb jne LBB0_69
0x43, 0x8b, 0x74, 0x21, 0x06, //0x000003f1 movl $6(%r9,%r12), %esi
0x89, 0xf1, //0x000003f6 movl %esi, %ecx
0xf7, 0xd1, //0x000003f8 notl %ecx
0x8d, 0x9e, 0xd0, 0xcf, 0xcf, 0xcf, //0x000003fa leal $-808464432(%rsi), %ebx
0x81, 0xe1, 0x80, 0x80, 0x80, 0x80, //0x00000400 andl $-2139062144, %ecx
0x85, 0xd9, //0x00000406 testl %ebx, %ecx
0x0f, 0x85, 0x98, 0x03, 0x00, 0x00, //0x00000408 jne LBB0_98
0x8d, 0x9e, 0x19, 0x19, 0x19, 0x19, //0x0000040e leal $421075225(%rsi), %ebx
0x09, 0xf3, //0x00000414 orl %esi, %ebx
0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x00000416 testl $-2139062144, %ebx
0x0f, 0x85, 0x84, 0x03, 0x00, 0x00, //0x0000041c jne LBB0_98
0x89, 0xf3, //0x00000422 movl %esi, %ebx
0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x00000424 andl $2139062143, %ebx
0xc7, 0x45, 0xd4, 0xc0, 0xc0, 0xc0, 0xc0, //0x0000042a movl $-1061109568, $-44(%rbp)
0x29, 0x5d, 0xd4, //0x00000431 subl %ebx, $-44(%rbp)
0x48, 0x89, 0x75, 0xb0, //0x00000434 movq %rsi, $-80(%rbp)
0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x00000438 leal $1179010630(%rbx), %esi
0x89, 0x75, 0xc4, //0x0000043e movl %esi, $-60(%rbp)
0x21, 0x4d, 0xd4, //0x00000441 andl %ecx, $-44(%rbp)
0x8b, 0x75, 0xc4, //0x00000444 movl $-60(%rbp), %esi
0x85, 0x75, 0xd4, //0x00000447 testl %esi, $-44(%rbp)
0x48, 0x8b, 0x75, 0xb0, //0x0000044a movq $-80(%rbp), %rsi
0x0f, 0x85, 0x52, 0x03, 0x00, 0x00, //0x0000044e jne LBB0_98
0xc7, 0x45, 0xd4, 0xe0, 0xe0, 0xe0, 0xe0, //0x00000454 movl $-522133280, $-44(%rbp)
0x29, 0x5d, 0xd4, //0x0000045b subl %ebx, $-44(%rbp)
0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x0000045e addl $960051513, %ebx
0x23, 0x4d, 0xd4, //0x00000464 andl $-44(%rbp), %ecx
0x85, 0xd9, //0x00000467 testl %ebx, %ecx
0x0f, 0x85, 0x37, 0x03, 0x00, 0x00, //0x00000469 jne LBB0_98
0x0f, 0xce, //0x0000046f bswapl %esi
0x89, 0xf1, //0x00000471 movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x00000473 shrl $4, %ecx
0xf7, 0xd1, //0x00000476 notl %ecx
0x81, 0xe1, 0x01, 0x01, 0x01, 0x01, //0x00000478 andl $16843009, %ecx
0x8d, 0x0c, 0xc9, //0x0000047e leal (%rcx,%rcx,8), %ecx
0x81, 0xe6, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000481 andl $252645135, %esi
0x01, 0xce, //0x00000487 addl %ecx, %esi
0x89, 0xf1, //0x00000489 movl %esi, %ecx
0xc1, 0xe9, 0x04, //0x0000048b shrl $4, %ecx
0x09, 0xf1, //0x0000048e orl %esi, %ecx
0x89, 0xce, //0x00000490 movl %ecx, %esi
0xc1, 0xee, 0x08, //0x00000492 shrl $8, %esi
0x81, 0xe6, 0x00, 0xff, 0x00, 0x00, //0x00000495 andl $65280, %esi
0x0f, 0xb6, 0xd9, //0x0000049b movzbl %cl, %ebx
0x09, 0xf3, //0x0000049e orl %esi, %ebx
0x81, 0xe1, 0x00, 0x00, 0xfc, 0x00, //0x000004a0 andl $16515072, %ecx
0x81, 0xf9, 0x00, 0x00, 0xdc, 0x00, //0x000004a6 cmpl $14417920, %ecx
0x0f, 0x84, 0x55, 0x01, 0x00, 0x00, //0x000004ac je LBB0_76
0xf6, 0x45, 0xb8, 0x02, //0x000004b2 testb $2, $-72(%rbp)
0x0f, 0x84, 0xf1, 0x03, 0x00, 0x00, //0x000004b6 je LBB0_113
0x49, 0x83, 0xc6, 0xfa, //0x000004bc addq $-6, %r14
0x66, 0xc7, 0x00, 0xef, 0xbf, //0x000004c0 movw $-16401, (%rax)
0xc6, 0x40, 0x02, 0xbd, //0x000004c5 movb $-67, $2(%rax)
0x48, 0x83, 0xc0, 0x03, //0x000004c9 addq $3, %rax
0x49, 0x83, 0xc4, 0x06, //0x000004cd addq $6, %r12
0x41, 0x89, 0xdf, //0x000004d1 movl %ebx, %r15d
0x81, 0xfb, 0x80, 0x00, 0x00, 0x00, //0x000004d4 cmpl $128, %ebx
0x0f, 0x83, 0xc0, 0xfe, 0xff, 0xff, //0x000004da jae LBB0_40
//0x000004e0 LBB0_53
0x4f, 0x8d, 0x4c, 0x21, 0x04, //0x000004e0 leaq $4(%r9,%r12), %r9
0x41, 0x89, 0xdf, //0x000004e5 movl %ebx, %r15d
0xe9, 0x96, 0x00, 0x00, 0x00, //0x000004e8 jmp LBB0_67
0x90, 0x90, 0x90, //0x000004ed .p2align 4, 0x90
//0x000004f0 LBB0_54
0x4f, 0x8d, 0x4c, 0x21, 0x04, //0x000004f0 leaq $4(%r9,%r12), %r9
0x44, 0x89, 0xf9, //0x000004f5 movl %r15d, %ecx
0xc1, 0xe9, 0x0c, //0x000004f8 shrl $12, %ecx
0x80, 0xc9, 0xe0, //0x000004fb orb $-32, %cl
0x88, 0x08, //0x000004fe movb %cl, (%rax)
0x44, 0x89, 0xf9, //0x00000500 movl %r15d, %ecx
0xc1, 0xe9, 0x06, //0x00000503 shrl $6, %ecx
0x80, 0xe1, 0x3f, //0x00000506 andb $63, %cl
0x80, 0xc9, 0x80, //0x00000509 orb $-128, %cl
0x88, 0x48, 0x01, //0x0000050c movb %cl, $1(%rax)
0x41, 0x80, 0xe7, 0x3f, //0x0000050f andb $63, %r15b
0x41, 0x80, 0xcf, 0x80, //0x00000513 orb $-128, %r15b
0x44, 0x88, 0x78, 0x02, //0x00000517 movb %r15b, $2(%rax)
//0x0000051b LBB0_55
0x48, 0x83, 0xc0, 0x03, //0x0000051b addq $3, %rax
//0x0000051f LBB0_56
0x4d, 0x89, 0xf5, //0x0000051f movq %r14, %r13
//0x00000522 LBB0_57
0x4d, 0x85, 0xed, //0x00000522 testq %r13, %r13
0x0f, 0x85, 0x2c, 0xfb, 0xff, 0xff, //0x00000525 jne LBB0_2
0xe9, 0x63, 0x02, 0x00, 0x00, //0x0000052b jmp LBB0_96
//0x00000530 LBB0_58
0x45, 0x85, 0xed, //0x00000530 testl %r13d, %r13d
0x0f, 0x84, 0x2e, 0x02, 0x00, 0x00, //0x00000533 je LBB0_94
0x41, 0x80, 0x79, 0xff, 0x5c, //0x00000539 cmpb $92, $-1(%r9)
0x0f, 0x85, 0x57, 0x02, 0x00, 0x00, //0x0000053e jne LBB0_97
0x41, 0x80, 0x39, 0x5c, //0x00000544 cmpb $92, (%r9)
0x0f, 0x85, 0x26, 0x00, 0x00, 0x00, //0x00000548 jne LBB0_65
0x41, 0x83, 0xfd, 0x01, //0x0000054e cmpl $1, %r13d
0x0f, 0x8e, 0x0f, 0x02, 0x00, 0x00, //0x00000552 jle LBB0_94
0x41, 0x8a, 0x49, 0x01, //0x00000558 movb $1(%r9), %cl
0x80, 0xf9, 0x22, //0x0000055c cmpb $34, %cl
0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x0000055f je LBB0_64
0x80, 0xf9, 0x5c, //0x00000565 cmpb $92, %cl
0x0f, 0x85, 0x0c, 0x03, 0x00, 0x00, //0x00000568 jne LBB0_109
//0x0000056e LBB0_64
0x49, 0xff, 0xc1, //0x0000056e incq %r9
0x49, 0xff, 0xcd, //0x00000571 decq %r13
//0x00000574 LBB0_65
0x49, 0xff, 0xc1, //0x00000574 incq %r9
0x49, 0xff, 0xcd, //0x00000577 decq %r13
0xe9, 0xcc, 0xfb, 0xff, 0xff, //0x0000057a jmp LBB0_15
//0x0000057f LBB0_66
0x49, 0x83, 0xc1, 0x04, //0x0000057f addq $4, %r9
//0x00000583 LBB0_67
0x44, 0x88, 0x38, //0x00000583 movb %r15b, (%rax)
0x48, 0xff, 0xc0, //0x00000586 incq %rax
0xe9, 0x91, 0xff, 0xff, 0xff, //0x00000589 jmp LBB0_56
//0x0000058e LBB0_68
0x4f, 0x8d, 0x4c, 0x21, 0x04, //0x0000058e leaq $4(%r9,%r12), %r9
0x44, 0x89, 0xf9, //0x00000593 movl %r15d, %ecx
0xc1, 0xe9, 0x06, //0x00000596 shrl $6, %ecx
0x80, 0xc9, 0xc0, //0x00000599 orb $-64, %cl
0x88, 0x08, //0x0000059c movb %cl, (%rax)
0x41, 0x80, 0xe7, 0x3f, //0x0000059e andb $63, %r15b
0x41, 0x80, 0xcf, 0x80, //0x000005a2 orb $-128, %r15b
0x44, 0x88, 0x78, 0x01, //0x000005a6 movb %r15b, $1(%rax)
0x48, 0x83, 0xc0, 0x02, //0x000005aa addq $2, %rax
0xe9, 0x6c, 0xff, 0xff, 0xff, //0x000005ae jmp LBB0_56
//0x000005b3 LBB0_69
0x4f, 0x8d, 0x4c, 0x21, 0x04, //0x000005b3 leaq $4(%r9,%r12), %r9
0xe9, 0x0f, 0x00, 0x00, 0x00, //0x000005b8 jmp LBB0_71
//0x000005bd LBB0_70
0x4f, 0x8d, 0x4c, 0x21, 0x05, //0x000005bd leaq $5(%r9,%r12), %r9
0x4d, 0x29, 0xe5, //0x000005c2 subq %r12, %r13
0x49, 0x83, 0xc5, 0xfb, //0x000005c5 addq $-5, %r13
0x4d, 0x89, 0xee, //0x000005c9 movq %r13, %r14
//0x000005cc LBB0_71
0xf6, 0x45, 0xb8, 0x02, //0x000005cc testb $2, $-72(%rbp)
0x0f, 0x85, 0x23, 0x00, 0x00, 0x00, //0x000005d0 jne LBB0_75
0xe9, 0xfb, 0x02, 0x00, 0x00, //0x000005d6 jmp LBB0_116
//0x000005db LBB0_72
0xf6, 0x45, 0xb8, 0x02, //0x000005db testb $2, $-72(%rbp)
0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000005df jne LBB0_74
0xe9, 0x7d, 0x01, 0x00, 0x00, //0x000005e5 jmp LBB0_94
//0x000005ea LBB0_73
0xf6, 0x45, 0xb8, 0x02, //0x000005ea testb $2, $-72(%rbp)
0x0f, 0x84, 0xef, 0x02, 0x00, 0x00, //0x000005ee je LBB0_117
//0x000005f4 LBB0_74
0x4f, 0x8d, 0x4c, 0x21, 0x04, //0x000005f4 leaq $4(%r9,%r12), %r9
//0x000005f9 LBB0_75
0x66, 0xc7, 0x00, 0xef, 0xbf, //0x000005f9 movw $-16401, (%rax)
0xc6, 0x40, 0x02, 0xbd, //0x000005fe movb $-67, $2(%rax)
0xe9, 0x14, 0xff, 0xff, 0xff, //0x00000602 jmp LBB0_55
//0x00000607 LBB0_76
0x4f, 0x8d, 0x4c, 0x21, 0x0a, //0x00000607 leaq $10(%r9,%r12), %r9
0x4d, 0x29, 0xe5, //0x0000060c subq %r12, %r13
0x49, 0x83, 0xc5, 0xf6, //0x0000060f addq $-10, %r13
0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000613 jmp LBB0_78
//0x00000618 LBB0_77
0x4f, 0x8d, 0x4c, 0x21, 0x0b, //0x00000618 leaq $11(%r9,%r12), %r9
0x4d, 0x29, 0xe5, //0x0000061d subq %r12, %r13
0x49, 0x83, 0xc5, 0xf5, //0x00000620 addq $-11, %r13
//0x00000624 LBB0_78
0x41, 0xc1, 0xe7, 0x0a, //0x00000624 shll $10, %r15d
0x41, 0x8d, 0x8c, 0x1f, 0x00, 0x24, 0xa0, 0xfc, //0x00000628 leal $-56613888(%r15,%rbx), %ecx
0x81, 0xf9, 0x00, 0x00, 0x11, 0x00, //0x00000630 cmpl $1114112, %ecx
0x0f, 0x82, 0x1c, 0x00, 0x00, 0x00, //0x00000636 jb LBB0_81
0xf6, 0x45, 0xb8, 0x02, //0x0000063c testb $2, $-72(%rbp)
0x0f, 0x84, 0x4d, 0x02, 0x00, 0x00, //0x00000640 je LBB0_111
0x66, 0xc7, 0x00, 0xef, 0xbf, //0x00000646 movw $-16401, (%rax)
0xc6, 0x40, 0x02, 0xbd, //0x0000064b movb $-67, $2(%rax)
0x48, 0x83, 0xc0, 0x03, //0x0000064f addq $3, %rax
0xe9, 0xca, 0xfe, 0xff, 0xff, //0x00000653 jmp LBB0_57
//0x00000658 LBB0_81
0x89, 0xce, //0x00000658 movl %ecx, %esi
0xc1, 0xee, 0x12, //0x0000065a shrl $18, %esi
0x40, 0x80, 0xce, 0xf0, //0x0000065d orb $-16, %sil
0x40, 0x88, 0x30, //0x00000661 movb %sil, (%rax)
0x89, 0xce, //0x00000664 movl %ecx, %esi
0xc1, 0xee, 0x0c, //0x00000666 shrl $12, %esi
0x40, 0x80, 0xe6, 0x3f, //0x00000669 andb $63, %sil
0x40, 0x80, 0xce, 0x80, //0x0000066d orb $-128, %sil
0x40, 0x88, 0x70, 0x01, //0x00000671 movb %sil, $1(%rax)
0x89, 0xce, //0x00000675 movl %ecx, %esi
0xc1, 0xee, 0x06, //0x00000677 shrl $6, %esi
0x40, 0x80, 0xe6, 0x3f, //0x0000067a andb $63, %sil
0x40, 0x80, 0xce, 0x80, //0x0000067e orb $-128, %sil
0x40, 0x88, 0x70, 0x02, //0x00000682 movb %sil, $2(%rax)
0x80, 0xe1, 0x3f, //0x00000686 andb $63, %cl
0x80, 0xc9, 0x80, //0x00000689 orb $-128, %cl
0x88, 0x48, 0x03, //0x0000068c movb %cl, $3(%rax)
0x48, 0x83, 0xc0, 0x04, //0x0000068f addq $4, %rax
0xe9, 0x8a, 0xfe, 0xff, 0xff, //0x00000693 jmp LBB0_57
//0x00000698 LBB0_82
0x45, 0x31, 0xed, //0x00000698 xorl %r13d, %r13d
0x48, 0x89, 0xd0, //0x0000069b movq %rdx, %rax
//0x0000069e LBB0_83
0x4c, 0x01, 0xe8, //0x0000069e addq %r13, %rax
0x48, 0x29, 0xd0, //0x000006a1 subq %rdx, %rax
//0x000006a4 LBB0_84
0x48, 0x83, 0xc4, 0x28, //0x000006a4 addq $40, %rsp
0x5b, //0x000006a8 popq %rbx
0x41, 0x5c, //0x000006a9 popq %r12
0x41, 0x5d, //0x000006ab popq %r13
0x41, 0x5e, //0x000006ad popq %r14
0x41, 0x5f, //0x000006af popq %r15
0x5d, //0x000006b1 popq %rbp
0xc3, //0x000006b2 retq
//0x000006b3 LBB0_85
0x4c, 0x89, 0xca, //0x000006b3 movq %r9, %rdx
0x48, 0x29, 0xfa, //0x000006b6 subq %rdi, %rdx
0x48, 0x8b, 0x7d, 0xc8, //0x000006b9 movq $-56(%rbp), %rdi
0x48, 0x89, 0x17, //0x000006bd movq %rdx, (%rdi)
0x41, 0x8a, 0x09, //0x000006c0 movb (%r9), %cl
0x8d, 0x71, 0xd0, //0x000006c3 leal $-48(%rcx), %esi
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000006c6 movq $-2, %rax
0x40, 0x80, 0xfe, 0x0a, //0x000006cd cmpb $10, %sil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x000006d1 jb LBB0_87
0x80, 0xe1, 0xdf, //0x000006d7 andb $-33, %cl
0x80, 0xc1, 0xbf, //0x000006da addb $-65, %cl
0x80, 0xf9, 0x05, //0x000006dd cmpb $5, %cl
0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x000006e0 ja LBB0_84
//0x000006e6 LBB0_87
0x48, 0x8d, 0x4a, 0x01, //0x000006e6 leaq $1(%rdx), %rcx
0x48, 0x89, 0x0f, //0x000006ea movq %rcx, (%rdi)
0x41, 0x8a, 0x49, 0x01, //0x000006ed movb $1(%r9), %cl
0x8d, 0x71, 0xd0, //0x000006f1 leal $-48(%rcx), %esi
0x40, 0x80, 0xfe, 0x0a, //0x000006f4 cmpb $10, %sil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x000006f8 jb LBB0_89
0x80, 0xe1, 0xdf, //0x000006fe andb $-33, %cl
0x80, 0xc1, 0xbf, //0x00000701 addb $-65, %cl
0x80, 0xf9, 0x05, //0x00000704 cmpb $5, %cl
0x0f, 0x87, 0x97, 0xff, 0xff, 0xff, //0x00000707 ja LBB0_84
//0x0000070d LBB0_89
0x48, 0x8d, 0x4a, 0x02, //0x0000070d leaq $2(%rdx), %rcx
0x48, 0x89, 0x0f, //0x00000711 movq %rcx, (%rdi)
0x41, 0x8a, 0x49, 0x02, //0x00000714 movb $2(%r9), %cl
0x8d, 0x71, 0xd0, //0x00000718 leal $-48(%rcx), %esi
0x40, 0x80, 0xfe, 0x0a, //0x0000071b cmpb $10, %sil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x0000071f jb LBB0_91
0x80, 0xe1, 0xdf, //0x00000725 andb $-33, %cl
0x80, 0xc1, 0xbf, //0x00000728 addb $-65, %cl
0x80, 0xf9, 0x05, //0x0000072b cmpb $5, %cl
0x0f, 0x87, 0x70, 0xff, 0xff, 0xff, //0x0000072e ja LBB0_84
//0x00000734 LBB0_91
0x48, 0x8d, 0x4a, 0x03, //0x00000734 leaq $3(%rdx), %rcx
0x48, 0x89, 0x0f, //0x00000738 movq %rcx, (%rdi)
0x41, 0x8a, 0x49, 0x03, //0x0000073b movb $3(%r9), %cl
0x8d, 0x71, 0xd0, //0x0000073f leal $-48(%rcx), %esi
0x40, 0x80, 0xfe, 0x0a, //0x00000742 cmpb $10, %sil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x00000746 jb LBB0_93
0x80, 0xe1, 0xdf, //0x0000074c andb $-33, %cl
0x80, 0xc1, 0xbf, //0x0000074f addb $-65, %cl
0x80, 0xf9, 0x05, //0x00000752 cmpb $5, %cl
0x0f, 0x87, 0x49, 0xff, 0xff, 0xff, //0x00000755 ja LBB0_84
//0x0000075b LBB0_93
0x48, 0x83, 0xc2, 0x04, //0x0000075b addq $4, %rdx
0x48, 0x89, 0x17, //0x0000075f movq %rdx, (%rdi)
0xe9, 0x3d, 0xff, 0xff, 0xff, //0x00000762 jmp LBB0_84
//0x00000767 LBB0_94
0x48, 0x8b, 0x45, 0xc8, //0x00000767 movq $-56(%rbp), %rax
0x4c, 0x89, 0x18, //0x0000076b movq %r11, (%rax)
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000076e movq $-1, %rax
0xe9, 0x2a, 0xff, 0xff, 0xff, //0x00000775 jmp LBB0_84
//0x0000077a LBB0_95
0x48, 0xf7, 0xd7, //0x0000077a notq %rdi
0x49, 0x01, 0xf9, //0x0000077d addq %rdi, %r9
0x48, 0x8b, 0x45, 0xc8, //0x00000780 movq $-56(%rbp), %rax
0x4c, 0x89, 0x08, //0x00000784 movq %r9, (%rax)
0x48, 0xc7, 0xc0, 0xfd, 0xff, 0xff, 0xff, //0x00000787 movq $-3, %rax
0xe9, 0x11, 0xff, 0xff, 0xff, //0x0000078e jmp LBB0_84
//0x00000793 LBB0_96
0x45, 0x31, 0xed, //0x00000793 xorl %r13d, %r13d
0xe9, 0x03, 0xff, 0xff, 0xff, //0x00000796 jmp LBB0_83
//0x0000079b LBB0_97
0x48, 0xf7, 0xd7, //0x0000079b notq %rdi
0x49, 0x01, 0xf9, //0x0000079e addq %rdi, %r9
0xe9, 0xda, 0x00, 0x00, 0x00, //0x000007a1 jmp LBB0_110
//0x000007a6 LBB0_98
0x4b, 0x8d, 0x74, 0x21, 0x04, //0x000007a6 leaq $4(%r9,%r12), %rsi
0xe9, 0x05, 0x00, 0x00, 0x00, //0x000007ab jmp LBB0_100
//0x000007b0 LBB0_99
0x4b, 0x8d, 0x74, 0x21, 0x05, //0x000007b0 leaq $5(%r9,%r12), %rsi
//0x000007b5 LBB0_100
0x48, 0x89, 0xf2, //0x000007b5 movq %rsi, %rdx
0x48, 0x29, 0xfa, //0x000007b8 subq %rdi, %rdx
0x48, 0x83, 0xc2, 0x02, //0x000007bb addq $2, %rdx
0x48, 0x8b, 0x45, 0xc8, //0x000007bf movq $-56(%rbp), %rax
0x48, 0x89, 0x10, //0x000007c3 movq %rdx, (%rax)
0x8a, 0x4e, 0x02, //0x000007c6 movb $2(%rsi), %cl
0x8d, 0x79, 0xd0, //0x000007c9 leal $-48(%rcx), %edi
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000007cc movq $-2, %rax
0x40, 0x80, 0xff, 0x0a, //0x000007d3 cmpb $10, %dil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x000007d7 jb LBB0_102
0x80, 0xe1, 0xdf, //0x000007dd andb $-33, %cl
0x80, 0xc1, 0xbf, //0x000007e0 addb $-65, %cl
0x80, 0xf9, 0x05, //0x000007e3 cmpb $5, %cl
0x0f, 0x87, 0xb8, 0xfe, 0xff, 0xff, //0x000007e6 ja LBB0_84
//0x000007ec LBB0_102
0x48, 0x8d, 0x4a, 0x01, //0x000007ec leaq $1(%rdx), %rcx
0x48, 0x8b, 0x7d, 0xc8, //0x000007f0 movq $-56(%rbp), %rdi
0x48, 0x89, 0x0f, //0x000007f4 movq %rcx, (%rdi)
0x8a, 0x4e, 0x03, //0x000007f7 movb $3(%rsi), %cl
0x8d, 0x79, 0xd0, //0x000007fa leal $-48(%rcx), %edi
0x40, 0x80, 0xff, 0x0a, //0x000007fd cmpb $10, %dil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x00000801 jb LBB0_104
0x80, 0xe1, 0xdf, //0x00000807 andb $-33, %cl
0x80, 0xc1, 0xbf, //0x0000080a addb $-65, %cl
0x80, 0xf9, 0x05, //0x0000080d cmpb $5, %cl
0x0f, 0x87, 0x8e, 0xfe, 0xff, 0xff, //0x00000810 ja LBB0_84
//0x00000816 LBB0_104
0x48, 0x8d, 0x4a, 0x02, //0x00000816 leaq $2(%rdx), %rcx
0x48, 0x8b, 0x7d, 0xc8, //0x0000081a movq $-56(%rbp), %rdi
0x48, 0x89, 0x0f, //0x0000081e movq %rcx, (%rdi)
0x8a, 0x4e, 0x04, //0x00000821 movb $4(%rsi), %cl
0x8d, 0x79, 0xd0, //0x00000824 leal $-48(%rcx), %edi
0x40, 0x80, 0xff, 0x0a, //0x00000827 cmpb $10, %dil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x0000082b jb LBB0_106
0x80, 0xe1, 0xdf, //0x00000831 andb $-33, %cl
0x80, 0xc1, 0xbf, //0x00000834 addb $-65, %cl
0x80, 0xf9, 0x05, //0x00000837 cmpb $5, %cl
0x0f, 0x87, 0x64, 0xfe, 0xff, 0xff, //0x0000083a ja LBB0_84
//0x00000840 LBB0_106
0x48, 0x8d, 0x4a, 0x03, //0x00000840 leaq $3(%rdx), %rcx
0x48, 0x8b, 0x7d, 0xc8, //0x00000844 movq $-56(%rbp), %rdi
0x48, 0x89, 0x0f, //0x00000848 movq %rcx, (%rdi)
0x8a, 0x4e, 0x05, //0x0000084b movb $5(%rsi), %cl
0x8d, 0x71, 0xd0, //0x0000084e leal $-48(%rcx), %esi
0x40, 0x80, 0xfe, 0x0a, //0x00000851 cmpb $10, %sil
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x00000855 jb LBB0_108
0x80, 0xe1, 0xdf, //0x0000085b andb $-33, %cl
0x80, 0xc1, 0xbf, //0x0000085e addb $-65, %cl
0x80, 0xf9, 0x05, //0x00000861 cmpb $5, %cl
0x0f, 0x87, 0x3a, 0xfe, 0xff, 0xff, //0x00000864 ja LBB0_84
//0x0000086a LBB0_108
0x48, 0x83, 0xc2, 0x04, //0x0000086a addq $4, %rdx
0x48, 0x8b, 0x4d, 0xc8, //0x0000086e movq $-56(%rbp), %rcx
0x48, 0x89, 0x11, //0x00000872 movq %rdx, (%rcx)
0xe9, 0x2a, 0xfe, 0xff, 0xff, //0x00000875 jmp LBB0_84
//0x0000087a LBB0_109
0x49, 0x29, 0xf9, //0x0000087a subq %rdi, %r9
0x49, 0xff, 0xc1, //0x0000087d incq %r9
//0x00000880 LBB0_110
0x48, 0x8b, 0x45, 0xc8, //0x00000880 movq $-56(%rbp), %rax
0x4c, 0x89, 0x08, //0x00000884 movq %r9, (%rax)
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000887 movq $-2, %rax
0xe9, 0x11, 0xfe, 0xff, 0xff, //0x0000088e jmp LBB0_84
//0x00000893 LBB0_111
0x49, 0x29, 0xf9, //0x00000893 subq %rdi, %r9
0x49, 0x83, 0xc1, 0xfc, //0x00000896 addq $-4, %r9
//0x0000089a LBB0_112
0x48, 0x8b, 0x45, 0xc8, //0x0000089a movq $-56(%rbp), %rax
0x4c, 0x89, 0x08, //0x0000089e movq %r9, (%rax)
0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000008a1 movq $-4, %rax
0xe9, 0xf7, 0xfd, 0xff, 0xff, //0x000008a8 jmp LBB0_84
//0x000008ad LBB0_113
0x4b, 0x8d, 0x44, 0x21, 0x0a, //0x000008ad leaq $10(%r9,%r12), %rax
0xe9, 0x05, 0x00, 0x00, 0x00, //0x000008b2 jmp LBB0_115
//0x000008b7 LBB0_114
0x4b, 0x8d, 0x44, 0x21, 0x0b, //0x000008b7 leaq $11(%r9,%r12), %rax
//0x000008bc LBB0_115
0x48, 0x29, 0xf8, //0x000008bc subq %rdi, %rax
0x48, 0x83, 0xc0, 0xfc, //0x000008bf addq $-4, %rax
0x48, 0x8b, 0x4d, 0xc8, //0x000008c3 movq $-56(%rbp), %rcx
0x48, 0x89, 0x01, //0x000008c7 movq %rax, (%rcx)
0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000008ca movq $-4, %rax
0xe9, 0xce, 0xfd, 0xff, 0xff, //0x000008d1 jmp LBB0_84
//0x000008d6 LBB0_116
0x49, 0x8d, 0x44, 0x3a, 0x04, //0x000008d6 leaq $4(%r10,%rdi), %rax
0x49, 0x29, 0xc1, //0x000008db subq %rax, %r9
0xe9, 0xb7, 0xff, 0xff, 0xff, //0x000008de jmp LBB0_112
//0x000008e3 LBB0_117
0x4d, 0x01, 0xe1, //0x000008e3 addq %r12, %r9
0x49, 0x29, 0xf9, //0x000008e6 subq %rdi, %r9
0xe9, 0xac, 0xff, 0xff, 0xff, //0x000008e9 jmp LBB0_112
0x00, 0x00, //0x000008ee .p2align 4, 0x00
//0x000008f0 __UnquoteTab
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008f0 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, //0x00000900 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, //0x00000910 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, //0x00000920 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, //0x00000930 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, //0x00000940 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, //0x00000950 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, //0x00000960 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, //0x00000966 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000976 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000986 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000996 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009a6 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009b6 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009c6 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009d6 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009e6 QUAD $0x0000000000000000; WORD $0x0000 // .space 10, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
}

View File

@ -0,0 +1,37 @@
// Code generated by Makefile, DO NOT EDIT.
// Code generated by Makefile, DO NOT EDIT.
/*
* Copyright 2021 ByteDance Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package avx
import (
`unsafe`
`github.com/bytedance/sonic/internal/native/types`
`github.com/bytedance/sonic/internal/rt`
)
var F_validate_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
var S_validate_one uintptr
//go:nosplit
func validate_one(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
return F_validate_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
}

View File

@ -0,0 +1,46 @@
// +build !noasm !appengine
// Code generated by asm2asm, DO NOT EDIT.
package avx
import (
`github.com/bytedance/sonic/loader`
)
const (
_entry__validate_one = 144
)
const (
_stack__validate_one = 152
)
const (
_size__validate_one = 9524
)
var (
_pcsp__validate_one = [][2]uint32{
{1, 0},
{4, 8},
{6, 16},
{8, 24},
{10, 32},
{12, 40},
{13, 48},
{8962, 152},
{8966, 48},
{8967, 40},
{8969, 32},
{8971, 24},
{8973, 16},
{8975, 8},
{8976, 0},
{9524, 152},
}
)
var _cfunc_validate_one = []loader.CFunc{
{"_validate_one_entry", 0, _entry__validate_one, 0, nil},
{"_validate_one", _entry__validate_one, _size__validate_one, _stack__validate_one, _pcsp__validate_one},
}

Some files were not shown because too many files have changed in this diff Show More